@kontakto/email-template-editor 2.12.0 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import DOMPurify from 'dompurify';
2
2
  import { marked, Renderer } from 'marked';
3
- import React63, { createContext, forwardRef, useRef, useEffect, useImperativeHandle, useMemo, useContext, useState, useCallback, useLayoutEffect, Fragment } from 'react';
3
+ import React65, { createContext, forwardRef, useRef, useEffect, useImperativeHandle, useMemo, useContext, useState, useCallback, useLayoutEffect, Fragment } from 'react';
4
4
  import { z } from 'zod';
5
5
  import { renderToStaticMarkup as renderToStaticMarkup$1 } from 'react-dom/server';
6
6
  import Handlebars from 'handlebars';
@@ -10,7 +10,7 @@ import { Stack, ThemeProvider, CssBaseline, useTheme, Drawer, Box, Tabs, Tab, Ty
10
10
  import { i18n } from '@lingui/core';
11
11
  import { create, useStore } from 'zustand';
12
12
  import { temporal } from 'zundo';
13
- import { AddOutlined, SearchOutlined, MonitorOutlined, PhoneIphoneOutlined, SendOutlined, MoreVertOutlined, DriveFileRenameOutlineOutlined, ContentCopyOutlined, LibraryAddOutlined, FileUploadOutlined, FileDownloadOutlined, DeleteOutlined, InsertDriveFileOutlined, DescriptionOutlined, EditOutlined, PreviewOutlined, CodeOutlined, SubjectOutlined, DataObjectOutlined, UndoOutlined, RedoOutlined, LastPageOutlined, AppRegistrationOutlined, CloudUploadOutlined, SaveOutlined, SaveAsOutlined, GridOnOutlined, SquareOutlined, ViewColumnSharp, ExpandMore, ChevronRight, KeyboardArrowUp, KeyboardArrowDown, FirstPageOutlined, MenuOutlined, CheckOutlined, InputOutlined, DeleteOutline, RoundedCornerOutlined, AspectRatioOutlined, HeightOutlined, CollectionsOutlined, ErrorOutlineOutlined, VerticalAlignTopOutlined, VerticalAlignCenterOutlined, VerticalAlignBottomOutlined, SpaceBarOutlined, BusinessOutlined, ViewColumnOutlined, HtmlOutlined, Crop32Outlined, HorizontalRuleOutlined, ContactMailOutlined, AccountCircleOutlined, ImageOutlined, SmartButtonOutlined, NotesOutlined, HMobiledataOutlined, DashboardOutlined, CloseOutlined, AlignVerticalTopOutlined, AlignVerticalBottomOutlined, AlignHorizontalLeftOutlined, AlignHorizontalRightOutlined, FormatAlignLeftOutlined, FormatAlignCenterOutlined, FormatAlignRightOutlined, FormatLineSpacingOutlined, TextFieldsOutlined, FormatColorTextOutlined, FormatBoldOutlined, FormatItalicOutlined, FormatUnderlinedOutlined, FormatOverlineOutlined, LinkOutlined, ArrowUpwardOutlined, ArrowDownwardOutlined, WidgetsOutlined } from '@mui/icons-material';
13
+ import { AddOutlined, SearchOutlined, MonitorOutlined, PhoneIphoneOutlined, SendOutlined, MoreVertOutlined, DriveFileRenameOutlineOutlined, ContentCopyOutlined, LibraryAddOutlined, FileUploadOutlined, FileDownloadOutlined, DeleteOutlined, InsertDriveFileOutlined, DescriptionOutlined, EditOutlined, PreviewOutlined, CodeOutlined, SubjectOutlined, DataObjectOutlined, UndoOutlined, RedoOutlined, LastPageOutlined, AppRegistrationOutlined, CloudUploadOutlined, SaveOutlined, SaveAsOutlined, GridOnOutlined, SquareOutlined, ViewColumnSharp, ExpandMore, ChevronRight, KeyboardArrowUp, KeyboardArrowDown, FirstPageOutlined, MenuOutlined, CheckOutlined, InputOutlined, DeleteOutline, RoundedCornerOutlined, AspectRatioOutlined, HeightOutlined, CollectionsOutlined, ErrorOutlineOutlined, VerticalAlignTopOutlined, VerticalAlignCenterOutlined, VerticalAlignBottomOutlined, SpaceBarOutlined, BusinessOutlined, ViewColumnOutlined, HtmlOutlined, Crop32Outlined, HorizontalRuleOutlined, ContactMailOutlined, AccountCircleOutlined, ImageOutlined, SmartButtonOutlined, NotesOutlined, HMobiledataOutlined, DashboardOutlined, CloseOutlined, AlignVerticalTopOutlined, AlignVerticalBottomOutlined, AlignHorizontalLeftOutlined, AlignHorizontalRightOutlined, FormatAlignLeftOutlined, FormatAlignCenterOutlined, FormatAlignRightOutlined, FormatLineSpacingOutlined, TextFieldsOutlined, FormatColorTextOutlined, FormatBoldOutlined, FormatItalicOutlined, FormatUnderlinedOutlined, FormatOverlineOutlined, LinkOutlined, ArrowUpwardOutlined, ArrowDownwardOutlined, WidgetsOutlined, PinOutlined } from '@mui/icons-material';
14
14
  import { HexColorPicker, HexColorInput } from 'react-colorful';
15
15
  import hljs from 'highlight.js';
16
16
  import jsonHighlighter from 'highlight.js/lib/languages/json';
@@ -193,7 +193,7 @@ function renderInlineMarkdownString(str) {
193
193
  function EmailMarkdown(_a) {
194
194
  var _b = _a, { markdown } = _b, props = __objRest(_b, ["markdown"]);
195
195
  const data = useMemo(() => renderMarkdownString(markdown), [markdown]);
196
- return /* @__PURE__ */ React63.createElement("div", __spreadProps(__spreadValues({}, props), { dangerouslySetInnerHTML: { __html: data } }));
196
+ return /* @__PURE__ */ React65.createElement("div", __spreadProps(__spreadValues({}, props), { dangerouslySetInnerHTML: { __html: data } }));
197
197
  }
198
198
  var FONT_FAMILY_SCHEMA = z.enum([
199
199
  "MODERN_SANS",
@@ -273,9 +273,9 @@ function Text({ style, props }) {
273
273
  };
274
274
  const text = (_g = props == null ? void 0 : props.text) != null ? _g : TextPropsDefaults.text;
275
275
  if (props == null ? void 0 : props.markdown) {
276
- return /* @__PURE__ */ React63.createElement(EmailMarkdown, { style: wStyle, markdown: text });
276
+ return /* @__PURE__ */ React65.createElement(EmailMarkdown, { style: wStyle, markdown: text });
277
277
  }
278
- return /* @__PURE__ */ React63.createElement("div", { style: wStyle }, text);
278
+ return /* @__PURE__ */ React65.createElement("div", { style: wStyle }, text);
279
279
  }
280
280
  var PADDING_SCHEMA2 = z.object({
281
281
  top: z.number(),
@@ -324,7 +324,7 @@ function Avatar({ style, props }) {
324
324
  textAlign: (_e = style == null ? void 0 : style.textAlign) != null ? _e : void 0,
325
325
  padding: getPadding2(style == null ? void 0 : style.padding)
326
326
  };
327
- return /* @__PURE__ */ React63.createElement("div", { style: sectionStyle }, /* @__PURE__ */ React63.createElement(
327
+ return /* @__PURE__ */ React65.createElement("div", { style: sectionStyle }, /* @__PURE__ */ React65.createElement(
328
328
  "img",
329
329
  {
330
330
  alt,
@@ -476,14 +476,14 @@ function Button({ style, props }) {
476
476
  padding: `${padding[0]}px ${padding[1]}px`,
477
477
  textDecoration: "none"
478
478
  };
479
- return /* @__PURE__ */ React63.createElement("div", { style: wrapperStyle }, /* @__PURE__ */ React63.createElement("a", { href: url, style: linkStyle, target: "_blank" }, /* @__PURE__ */ React63.createElement(
479
+ return /* @__PURE__ */ React65.createElement("div", { style: wrapperStyle }, /* @__PURE__ */ React65.createElement("a", { href: url, style: linkStyle, target: "_blank" }, /* @__PURE__ */ React65.createElement(
480
480
  "span",
481
481
  {
482
482
  dangerouslySetInnerHTML: {
483
483
  __html: `<!--[if mso]><i style="letter-spacing: ${padding[1]}px;mso-font-width:-100%;mso-text-raise:${textRaise}" hidden>&nbsp;</i><![endif]-->`
484
484
  }
485
485
  }
486
- ), /* @__PURE__ */ React63.createElement("span", null, text), /* @__PURE__ */ React63.createElement(
486
+ ), /* @__PURE__ */ React65.createElement("span", null, text), /* @__PURE__ */ React65.createElement(
487
487
  "span",
488
488
  {
489
489
  dangerouslySetInnerHTML: {
@@ -532,7 +532,7 @@ function ColumnsContainer({ style, columns, props }) {
532
532
  contentAlignment: (_d = props == null ? void 0 : props.contentAlignment) != null ? _d : ColumnsContainerPropsDefaults.contentAlignment,
533
533
  fixedWidths: props == null ? void 0 : props.fixedWidths
534
534
  };
535
- return /* @__PURE__ */ React63.createElement("div", { style: wStyle }, /* @__PURE__ */ React63.createElement(
535
+ return /* @__PURE__ */ React65.createElement("div", { style: wStyle }, /* @__PURE__ */ React65.createElement(
536
536
  "table",
537
537
  {
538
538
  align: "center",
@@ -541,7 +541,7 @@ function ColumnsContainer({ style, columns, props }) {
541
541
  border: 0,
542
542
  style: { tableLayout: "fixed", borderCollapse: "collapse" }
543
543
  },
544
- /* @__PURE__ */ React63.createElement("tbody", { style: { width: "100%" } }, /* @__PURE__ */ React63.createElement("tr", { style: { width: "100%" } }, /* @__PURE__ */ React63.createElement(TableCell, { index: 0, props: blockProps, columns }), /* @__PURE__ */ React63.createElement(TableCell, { index: 1, props: blockProps, columns }), /* @__PURE__ */ React63.createElement(TableCell, { index: 2, props: blockProps, columns })))
544
+ /* @__PURE__ */ React65.createElement("tbody", { style: { width: "100%" } }, /* @__PURE__ */ React65.createElement("tr", { style: { width: "100%" } }, /* @__PURE__ */ React65.createElement(TableCell, { index: 0, props: blockProps, columns }), /* @__PURE__ */ React65.createElement(TableCell, { index: 1, props: blockProps, columns }), /* @__PURE__ */ React65.createElement(TableCell, { index: 2, props: blockProps, columns })))
545
545
  ));
546
546
  }
547
547
  function TableCell({ index, props, columns }) {
@@ -559,7 +559,7 @@ function TableCell({ index, props, columns }) {
559
559
  width: (_d = (_c = props.fixedWidths) == null ? void 0 : _c[index]) != null ? _d : void 0
560
560
  };
561
561
  const children = (_e = columns && columns[index]) != null ? _e : null;
562
- return /* @__PURE__ */ React63.createElement("td", { style }, children);
562
+ return /* @__PURE__ */ React65.createElement("td", { style }, children);
563
563
  }
564
564
  function getPaddingBefore(index, { columnsGap, columnsCount }) {
565
565
  if (index === 0) {
@@ -622,9 +622,9 @@ function Container({ style, children }) {
622
622
  padding: getPadding5(style == null ? void 0 : style.padding)
623
623
  };
624
624
  if (!children) {
625
- return /* @__PURE__ */ React63.createElement("div", { style: wStyle });
625
+ return /* @__PURE__ */ React65.createElement("div", { style: wStyle });
626
626
  }
627
- return /* @__PURE__ */ React63.createElement("div", { style: wStyle }, children);
627
+ return /* @__PURE__ */ React65.createElement("div", { style: wStyle }, children);
628
628
  }
629
629
  var container_default = Container;
630
630
  var COLOR_SCHEMA5 = z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();
@@ -658,7 +658,7 @@ function Divider({ style, props }) {
658
658
  };
659
659
  const borderTopWidth = (_b = props == null ? void 0 : props.lineHeight) != null ? _b : DividerPropsDefaults.lineHeight;
660
660
  const borderTopColor = (_c = props == null ? void 0 : props.lineColor) != null ? _c : DividerPropsDefaults.lineColor;
661
- return /* @__PURE__ */ React63.createElement("div", { style: st }, /* @__PURE__ */ React63.createElement(
661
+ return /* @__PURE__ */ React65.createElement("div", { style: st }, /* @__PURE__ */ React65.createElement(
662
662
  "hr",
663
663
  {
664
664
  style: {
@@ -756,11 +756,11 @@ function Heading({ props, style }) {
756
756
  const renderProps = isMarkdown ? { style: hStyle, dangerouslySetInnerHTML: { __html: html2 != null ? html2 : "" } } : { style: hStyle, children: text };
757
757
  switch (level) {
758
758
  case "h1":
759
- return /* @__PURE__ */ React63.createElement("h1", __spreadValues({}, renderProps));
759
+ return /* @__PURE__ */ React65.createElement("h1", __spreadValues({}, renderProps));
760
760
  case "h2":
761
- return /* @__PURE__ */ React63.createElement("h2", __spreadValues({}, renderProps));
761
+ return /* @__PURE__ */ React65.createElement("h2", __spreadValues({}, renderProps));
762
762
  case "h3":
763
- return /* @__PURE__ */ React63.createElement("h3", __spreadValues({}, renderProps));
763
+ return /* @__PURE__ */ React65.createElement("h3", __spreadValues({}, renderProps));
764
764
  }
765
765
  }
766
766
  function getFontSize(level) {
@@ -842,9 +842,9 @@ function Html({ style, props }) {
842
842
  padding: getPadding8(style == null ? void 0 : style.padding)
843
843
  };
844
844
  if (!children) {
845
- return /* @__PURE__ */ React63.createElement("div", { style: cssStyle });
845
+ return /* @__PURE__ */ React65.createElement("div", { style: cssStyle });
846
846
  }
847
- return /* @__PURE__ */ React63.createElement("div", { style: cssStyle, dangerouslySetInnerHTML: { __html: children } });
847
+ return /* @__PURE__ */ React65.createElement("div", { style: cssStyle, dangerouslySetInnerHTML: { __html: children } });
848
848
  }
849
849
  var html_default = Html;
850
850
  var PADDING_SCHEMA9 = z.object({
@@ -880,7 +880,7 @@ function Image({ style, props }) {
880
880
  const linkHref = (_c = props == null ? void 0 : props.linkHref) != null ? _c : null;
881
881
  const width = (_d = props == null ? void 0 : props.width) != null ? _d : void 0;
882
882
  const height = (_e = props == null ? void 0 : props.height) != null ? _e : void 0;
883
- const imageElement = /* @__PURE__ */ React63.createElement(
883
+ const imageElement = /* @__PURE__ */ React65.createElement(
884
884
  "img",
885
885
  {
886
886
  alt: (_f = props == null ? void 0 : props.alt) != null ? _f : "",
@@ -900,11 +900,19 @@ function Image({ style, props }) {
900
900
  }
901
901
  );
902
902
  if (!linkHref) {
903
- return /* @__PURE__ */ React63.createElement("div", { style: sectionStyle }, imageElement);
903
+ return /* @__PURE__ */ React65.createElement("div", { style: sectionStyle }, imageElement);
904
904
  }
905
- return /* @__PURE__ */ React63.createElement("div", { style: sectionStyle }, /* @__PURE__ */ React63.createElement("a", { href: linkHref, style: { textDecoration: "none" }, target: "_blank" }, imageElement));
905
+ return /* @__PURE__ */ React65.createElement("div", { style: sectionStyle }, /* @__PURE__ */ React65.createElement("a", { href: linkHref, style: { textDecoration: "none" }, target: "_blank" }, imageElement));
906
906
  }
907
907
  var image_default = Image;
908
+ var COLOR_SCHEMA8 = z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();
909
+ var PADDING_SCHEMA10 = z.object({
910
+ top: z.number(),
911
+ bottom: z.number(),
912
+ right: z.number(),
913
+ left: z.number()
914
+ }).optional().nullable();
915
+ var getPadding10 = (padding) => padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : void 0;
908
916
  var FONT_FAMILY_SCHEMA5 = z.enum([
909
917
  "MODERN_SANS",
910
918
  "BOOK_SANS",
@@ -939,19 +947,115 @@ function getFontFamily5(fontFamily) {
939
947
  }
940
948
  return void 0;
941
949
  }
942
- var COLOR_SCHEMA8 = z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();
943
- var PADDING_SCHEMA10 = z.object({
950
+ var OtpPropsSchema = z.object({
951
+ props: z.object({
952
+ code: z.string().optional().nullable()
953
+ }).optional().nullable(),
954
+ style: z.object({
955
+ color: COLOR_SCHEMA8,
956
+ backgroundColor: COLOR_SCHEMA8,
957
+ borderColor: COLOR_SCHEMA8,
958
+ borderRadius: z.number().gte(0).optional().nullable(),
959
+ fontSize: z.number().gte(0).optional().nullable(),
960
+ fontFamily: FONT_FAMILY_SCHEMA5,
961
+ fontWeight: z.enum(["bold", "normal"]).optional().nullable(),
962
+ letterSpacing: z.number().optional().nullable(),
963
+ textAlign: z.enum(["left", "center", "right"]).optional().nullable(),
964
+ padding: PADDING_SCHEMA10
965
+ }).optional().nullable()
966
+ });
967
+ var OtpProps = OtpPropsSchema;
968
+ var OtpPropsDefaults = {
969
+ code: "123456"
970
+ };
971
+ function Otp({ props, style }) {
972
+ var _a, _b, _c, _d, _e, _f, _g;
973
+ const code = (_a = props == null ? void 0 : props.code) != null ? _a : OtpPropsDefaults.code;
974
+ const wrapperStyle = {
975
+ textAlign: (_b = style == null ? void 0 : style.textAlign) != null ? _b : "center",
976
+ padding: getPadding10(style == null ? void 0 : style.padding)
977
+ };
978
+ const codeStyle = {
979
+ display: "inline-block",
980
+ color: (_c = style == null ? void 0 : style.color) != null ? _c : "#000000",
981
+ backgroundColor: (_d = style == null ? void 0 : style.backgroundColor) != null ? _d : void 0,
982
+ border: (style == null ? void 0 : style.borderColor) ? `1px solid ${style.borderColor}` : void 0,
983
+ borderRadius: (style == null ? void 0 : style.borderRadius) != null ? `${style.borderRadius}px` : void 0,
984
+ fontFamily: (_e = getFontFamily5(style == null ? void 0 : style.fontFamily)) != null ? _e : '"Nimbus Mono PS", "Courier New", "Cutive Mono", monospace',
985
+ fontSize: (_f = style == null ? void 0 : style.fontSize) != null ? _f : 32,
986
+ fontWeight: (_g = style == null ? void 0 : style.fontWeight) != null ? _g : "bold",
987
+ letterSpacing: (style == null ? void 0 : style.letterSpacing) != null ? `${style.letterSpacing}px` : "4px",
988
+ padding: (style == null ? void 0 : style.backgroundColor) || (style == null ? void 0 : style.borderColor) ? "12px 20px" : void 0,
989
+ // Override any auto-link styling that email clients might inject if their
990
+ // data detectors mistakenly fire despite the suppressions below.
991
+ textDecoration: "none"
992
+ };
993
+ const dataDetectorAttrs = {
994
+ "x-apple-data-detectors": "false",
995
+ "data-detect-link": "false"
996
+ };
997
+ return /* @__PURE__ */ React65.createElement("div", __spreadValues({ style: wrapperStyle }, dataDetectorAttrs), /* @__PURE__ */ React65.createElement(
998
+ "a",
999
+ __spreadValues({
1000
+ href: "#",
1001
+ style: __spreadProps(__spreadValues({}, codeStyle), {
1002
+ color: codeStyle.color,
1003
+ textDecoration: "none",
1004
+ cursor: "default",
1005
+ pointerEvents: "none"
1006
+ })
1007
+ }, dataDetectorAttrs),
1008
+ code
1009
+ ));
1010
+ }
1011
+ var otp_default = Otp;
1012
+ var FONT_FAMILY_SCHEMA6 = z.enum([
1013
+ "MODERN_SANS",
1014
+ "BOOK_SANS",
1015
+ "ORGANIC_SANS",
1016
+ "GEOMETRIC_SANS",
1017
+ "HEAVY_SANS",
1018
+ "ROUNDED_SANS",
1019
+ "MODERN_SERIF",
1020
+ "BOOK_SERIF",
1021
+ "MONOSPACE"
1022
+ ]).nullable().optional();
1023
+ function getFontFamily6(fontFamily) {
1024
+ switch (fontFamily) {
1025
+ case "MODERN_SANS":
1026
+ return '"Helvetica Neue", "Arial Nova", "Nimbus Sans", Arial, sans-serif';
1027
+ case "BOOK_SANS":
1028
+ return 'Optima, Candara, "Noto Sans", source-sans-pro, sans-serif';
1029
+ case "ORGANIC_SANS":
1030
+ return 'Seravek, "Gill Sans Nova", Ubuntu, Calibri, "DejaVu Sans", source-sans-pro, sans-serif';
1031
+ case "GEOMETRIC_SANS":
1032
+ return 'Avenir, "Avenir Next LT Pro", Montserrat, Corbel, "URW Gothic", source-sans-pro, sans-serif';
1033
+ case "HEAVY_SANS":
1034
+ return 'Bahnschrift, "DIN Alternate", "Franklin Gothic Medium", "Nimbus Sans Narrow", sans-serif-condensed, sans-serif';
1035
+ case "ROUNDED_SANS":
1036
+ return 'ui-rounded, "Hiragino Maru Gothic ProN", Quicksand, Comfortaa, Manjari, "Arial Rounded MT Bold", Calibri, source-sans-pro, sans-serif';
1037
+ case "MODERN_SERIF":
1038
+ return 'Charter, "Bitstream Charter", "Sitka Text", Cambria, serif';
1039
+ case "BOOK_SERIF":
1040
+ return '"Iowan Old Style", "Palatino Linotype", "URW Palladio L", P052, serif';
1041
+ case "MONOSPACE":
1042
+ return '"Nimbus Mono PS", "Courier New", "Cutive Mono", monospace';
1043
+ }
1044
+ return void 0;
1045
+ }
1046
+ var COLOR_SCHEMA9 = z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();
1047
+ var PADDING_SCHEMA11 = z.object({
944
1048
  top: z.number(),
945
1049
  bottom: z.number(),
946
1050
  right: z.number(),
947
1051
  left: z.number()
948
1052
  }).optional().nullable();
949
- var getPadding10 = (padding) => padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : void 0;
1053
+ var getPadding11 = (padding) => padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : void 0;
950
1054
  var SignaturePropsSchema = z.object({
951
1055
  style: z.object({
952
- backgroundColor: COLOR_SCHEMA8,
953
- fontFamily: FONT_FAMILY_SCHEMA5,
954
- padding: PADDING_SCHEMA10
1056
+ backgroundColor: COLOR_SCHEMA9,
1057
+ fontFamily: FONT_FAMILY_SCHEMA6,
1058
+ padding: PADDING_SCHEMA11
955
1059
  }).optional().nullable(),
956
1060
  props: z.object({
957
1061
  greeting: z.string().optional().nullable(),
@@ -966,9 +1070,9 @@ var SignaturePropsSchema = z.object({
966
1070
  imageSize: z.number().optional().nullable(),
967
1071
  imageShape: z.enum(["circle", "square", "rounded"]).optional().nullable(),
968
1072
  layout: z.enum(["horizontal", "vertical"]).optional().nullable(),
969
- nameColor: COLOR_SCHEMA8,
970
- textColor: COLOR_SCHEMA8,
971
- linkColor: COLOR_SCHEMA8
1073
+ nameColor: COLOR_SCHEMA9,
1074
+ textColor: COLOR_SCHEMA9,
1075
+ linkColor: COLOR_SCHEMA9
972
1076
  }).optional().nullable()
973
1077
  });
974
1078
  var SignatureProps = SignaturePropsSchema;
@@ -1019,8 +1123,8 @@ function Signature({ style, props }) {
1019
1123
  const linkColor = (_o = props == null ? void 0 : props.linkColor) != null ? _o : SignaturePropsDefaults.linkColor;
1020
1124
  const wrapperStyle = {
1021
1125
  backgroundColor: (_p = style == null ? void 0 : style.backgroundColor) != null ? _p : void 0,
1022
- fontFamily: getFontFamily5(style == null ? void 0 : style.fontFamily),
1023
- padding: getPadding10(style == null ? void 0 : style.padding)
1126
+ fontFamily: getFontFamily6(style == null ? void 0 : style.fontFamily),
1127
+ padding: getPadding11(style == null ? void 0 : style.padding)
1024
1128
  };
1025
1129
  const greetingStyle = {
1026
1130
  fontSize: 14,
@@ -1048,7 +1152,7 @@ function Signature({ style, props }) {
1048
1152
  color: linkColor,
1049
1153
  textDecoration: "none"
1050
1154
  };
1051
- const imageElement = imageUrl ? /* @__PURE__ */ React63.createElement(
1155
+ const imageElement = imageUrl ? /* @__PURE__ */ React65.createElement(
1052
1156
  "img",
1053
1157
  {
1054
1158
  src: imageUrl,
@@ -1067,18 +1171,18 @@ function Signature({ style, props }) {
1067
1171
  }
1068
1172
  ) : null;
1069
1173
  const contactParts = [];
1070
- if (email) contactParts.push(/* @__PURE__ */ React63.createElement("a", { key: "email", href: `mailto:${email}`, style: linkStyle }, email));
1071
- if (phone) contactParts.push(/* @__PURE__ */ React63.createElement("a", { key: "phone", href: `tel:${phone}`, style: linkStyle }, phone));
1174
+ if (email) contactParts.push(/* @__PURE__ */ React65.createElement("a", { key: "email", href: `mailto:${email}`, style: linkStyle }, email));
1175
+ if (phone) contactParts.push(/* @__PURE__ */ React65.createElement("a", { key: "phone", href: `tel:${phone}`, style: linkStyle }, phone));
1072
1176
  if (website) {
1073
1177
  const href = website.startsWith("http") ? website : `https://${website}`;
1074
- contactParts.push(/* @__PURE__ */ React63.createElement("a", { key: "website", href, style: linkStyle, target: "_blank" }, website));
1178
+ contactParts.push(/* @__PURE__ */ React65.createElement("a", { key: "website", href, style: linkStyle, target: "_blank" }, website));
1075
1179
  }
1076
- const textContent = /* @__PURE__ */ React63.createElement("div", null, name && /* @__PURE__ */ React63.createElement("p", { style: nameStyle }, name), title && /* @__PURE__ */ React63.createElement("p", { style: detailStyle }, title), company && /* @__PURE__ */ React63.createElement("p", { style: detailStyle }, company), address && /* @__PURE__ */ React63.createElement("p", { style: detailStyle }, address), contactParts.length > 0 && /* @__PURE__ */ React63.createElement("p", { style: __spreadProps(__spreadValues({}, detailStyle), { marginTop: 4 }) }, contactParts.map((part, i) => /* @__PURE__ */ React63.createElement(React63.Fragment, { key: i }, i > 0 && /* @__PURE__ */ React63.createElement("span", { style: detailStyle }, " \xB7 "), part))));
1077
- const greetingElement = greeting ? /* @__PURE__ */ React63.createElement("p", { style: greetingStyle }, greeting) : null;
1180
+ const textContent = /* @__PURE__ */ React65.createElement("div", null, name && /* @__PURE__ */ React65.createElement("p", { style: nameStyle }, name), title && /* @__PURE__ */ React65.createElement("p", { style: detailStyle }, title), company && /* @__PURE__ */ React65.createElement("p", { style: detailStyle }, company), address && /* @__PURE__ */ React65.createElement("p", { style: detailStyle }, address), contactParts.length > 0 && /* @__PURE__ */ React65.createElement("p", { style: __spreadProps(__spreadValues({}, detailStyle), { marginTop: 4 }) }, contactParts.map((part, i) => /* @__PURE__ */ React65.createElement(React65.Fragment, { key: i }, i > 0 && /* @__PURE__ */ React65.createElement("span", { style: detailStyle }, " \xB7 "), part))));
1181
+ const greetingElement = greeting ? /* @__PURE__ */ React65.createElement("p", { style: greetingStyle }, greeting) : null;
1078
1182
  if (layout === "vertical") {
1079
- return /* @__PURE__ */ React63.createElement("div", { style: wrapperStyle }, greetingElement, imageElement && /* @__PURE__ */ React63.createElement("div", { style: { marginBottom: 12 } }, imageElement), textContent);
1183
+ return /* @__PURE__ */ React65.createElement("div", { style: wrapperStyle }, greetingElement, imageElement && /* @__PURE__ */ React65.createElement("div", { style: { marginBottom: 12 } }, imageElement), textContent);
1080
1184
  }
1081
- return /* @__PURE__ */ React63.createElement("div", { style: wrapperStyle }, greetingElement, /* @__PURE__ */ React63.createElement("table", { cellPadding: "0", cellSpacing: "0", border: 0, role: "presentation" }, /* @__PURE__ */ React63.createElement("tbody", null, /* @__PURE__ */ React63.createElement("tr", null, imageElement && /* @__PURE__ */ React63.createElement("td", { style: { verticalAlign: "middle", paddingRight: 16 } }, imageElement), /* @__PURE__ */ React63.createElement("td", { style: { verticalAlign: "middle" } }, textContent)))));
1185
+ return /* @__PURE__ */ React65.createElement("div", { style: wrapperStyle }, greetingElement, /* @__PURE__ */ React65.createElement("table", { cellPadding: "0", cellSpacing: "0", border: 0, role: "presentation" }, /* @__PURE__ */ React65.createElement("tbody", null, /* @__PURE__ */ React65.createElement("tr", null, imageElement && /* @__PURE__ */ React65.createElement("td", { style: { verticalAlign: "middle", paddingRight: 16 } }, imageElement), /* @__PURE__ */ React65.createElement("td", { style: { verticalAlign: "middle" } }, textContent)))));
1082
1186
  }
1083
1187
  var signature_default = Signature;
1084
1188
  var SpacerPropsSchema = z.object({
@@ -1095,13 +1199,13 @@ function Spacer({ props }) {
1095
1199
  const style = {
1096
1200
  height: (_a = props == null ? void 0 : props.height) != null ? _a : SpacerPropsDefaults.height
1097
1201
  };
1098
- return /* @__PURE__ */ React63.createElement("div", { style });
1202
+ return /* @__PURE__ */ React65.createElement("div", { style });
1099
1203
  }
1100
1204
  var spacer_default = Spacer;
1101
1205
  function buildBlockComponent(blocks) {
1102
1206
  return function BlockComponent({ type, data }) {
1103
1207
  const Component = blocks[type].Component;
1104
- return /* @__PURE__ */ React63.createElement(Component, __spreadValues({}, data));
1208
+ return /* @__PURE__ */ React65.createElement(Component, __spreadValues({}, data));
1105
1209
  };
1106
1210
  }
1107
1211
  function buildBlockConfigurationSchema(blocks) {
@@ -1170,9 +1274,9 @@ function ColumnsContainerReader({ style, props }) {
1170
1274
  const _a = props != null ? props : {}, { columns } = _a, restProps = __objRest(_a, ["columns"]);
1171
1275
  let cols = void 0;
1172
1276
  if (columns) {
1173
- cols = columns.map((col) => col.childrenIds.map((childId) => /* @__PURE__ */ React63.createElement(ReaderBlock, { key: childId, id: childId })));
1277
+ cols = columns.map((col) => col.childrenIds.map((childId) => /* @__PURE__ */ React65.createElement(ReaderBlock, { key: childId, id: childId })));
1174
1278
  }
1175
- return /* @__PURE__ */ React63.createElement(columns_container_default, { props: restProps, columns: cols, style });
1279
+ return /* @__PURE__ */ React65.createElement(columns_container_default, { props: restProps, columns: cols, style });
1176
1280
  }
1177
1281
  var ContainerPropsSchema2 = z.object({
1178
1282
  style: ContainerPropsSchema.shape.style,
@@ -1183,10 +1287,10 @@ var ContainerPropsSchema2 = z.object({
1183
1287
  function ContainerReader({ style, props }) {
1184
1288
  var _a;
1185
1289
  const childrenIds = (_a = props == null ? void 0 : props.childrenIds) != null ? _a : [];
1186
- return /* @__PURE__ */ React63.createElement(container_default, { style }, childrenIds.map((childId) => /* @__PURE__ */ React63.createElement(ReaderBlock, { key: childId, id: childId })));
1290
+ return /* @__PURE__ */ React65.createElement(container_default, { style }, childrenIds.map((childId) => /* @__PURE__ */ React65.createElement(ReaderBlock, { key: childId, id: childId })));
1187
1291
  }
1188
- var COLOR_SCHEMA9 = z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();
1189
- var FONT_FAMILY_SCHEMA6 = z.enum([
1292
+ var COLOR_SCHEMA10 = z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();
1293
+ var FONT_FAMILY_SCHEMA7 = z.enum([
1190
1294
  "MODERN_SANS",
1191
1295
  "BOOK_SANS",
1192
1296
  "ORGANIC_SANS",
@@ -1203,18 +1307,18 @@ var TemplateVariableSchema = z.object({
1203
1307
  sampleValue: z.string().optional().nullable()
1204
1308
  });
1205
1309
  var EmailLayoutPropsSchema = z.object({
1206
- backdropColor: COLOR_SCHEMA9,
1310
+ backdropColor: COLOR_SCHEMA10,
1207
1311
  backdropDisabled: z.boolean().optional().nullable(),
1208
- borderColor: COLOR_SCHEMA9,
1312
+ borderColor: COLOR_SCHEMA10,
1209
1313
  borderRadius: z.number().optional().nullable(),
1210
- canvasColor: COLOR_SCHEMA9,
1211
- textColor: COLOR_SCHEMA9,
1212
- fontFamily: FONT_FAMILY_SCHEMA6,
1314
+ canvasColor: COLOR_SCHEMA10,
1315
+ textColor: COLOR_SCHEMA10,
1316
+ fontFamily: FONT_FAMILY_SCHEMA7,
1213
1317
  childrenIds: z.array(z.string()).optional().nullable(),
1214
1318
  subject: z.string().optional().nullable(),
1215
1319
  variables: z.array(TemplateVariableSchema).optional().nullable()
1216
1320
  });
1217
- function getFontFamily6(fontFamily) {
1321
+ function getFontFamily7(fontFamily) {
1218
1322
  const f = fontFamily != null ? fontFamily : "MODERN_SANS";
1219
1323
  switch (f) {
1220
1324
  case "MODERN_SANS":
@@ -1248,7 +1352,7 @@ function EmailLayoutReader(props) {
1248
1352
  const childrenIds = (_a = props.childrenIds) != null ? _a : [];
1249
1353
  const baseStyle = {
1250
1354
  color: (_b = props.textColor) != null ? _b : "#262626",
1251
- fontFamily: getFontFamily6(props.fontFamily),
1355
+ fontFamily: getFontFamily7(props.fontFamily),
1252
1356
  fontSize: "16px",
1253
1357
  fontWeight: "400",
1254
1358
  letterSpacing: "0.15008px",
@@ -1256,9 +1360,9 @@ function EmailLayoutReader(props) {
1256
1360
  margin: "0"
1257
1361
  };
1258
1362
  if (props.backdropDisabled) {
1259
- return /* @__PURE__ */ React63.createElement("div", { style: baseStyle }, childrenIds.map((childId) => /* @__PURE__ */ React63.createElement(ReaderBlock, { key: childId, id: childId })));
1363
+ return /* @__PURE__ */ React65.createElement("div", { style: baseStyle }, childrenIds.map((childId) => /* @__PURE__ */ React65.createElement(ReaderBlock, { key: childId, id: childId })));
1260
1364
  }
1261
- return /* @__PURE__ */ React63.createElement(
1365
+ return /* @__PURE__ */ React65.createElement(
1262
1366
  "div",
1263
1367
  {
1264
1368
  style: __spreadProps(__spreadValues({}, baseStyle), {
@@ -1268,7 +1372,7 @@ function EmailLayoutReader(props) {
1268
1372
  width: "100%"
1269
1373
  })
1270
1374
  },
1271
- /* @__PURE__ */ React63.createElement(
1375
+ /* @__PURE__ */ React65.createElement(
1272
1376
  "table",
1273
1377
  {
1274
1378
  align: "center",
@@ -1286,7 +1390,7 @@ function EmailLayoutReader(props) {
1286
1390
  cellPadding: "0",
1287
1391
  border: 0
1288
1392
  },
1289
- /* @__PURE__ */ React63.createElement("tbody", null, /* @__PURE__ */ React63.createElement("tr", { style: { width: "100%" } }, /* @__PURE__ */ React63.createElement("td", null, childrenIds.map((childId) => /* @__PURE__ */ React63.createElement(ReaderBlock, { key: childId, id: childId })))))
1393
+ /* @__PURE__ */ React65.createElement("tbody", null, /* @__PURE__ */ React65.createElement("tr", { style: { width: "100%" } }, /* @__PURE__ */ React65.createElement("td", null, childrenIds.map((childId) => /* @__PURE__ */ React65.createElement(ReaderBlock, { key: childId, id: childId })))))
1290
1394
  )
1291
1395
  );
1292
1396
  }
@@ -1298,7 +1402,7 @@ function useReaderDocument() {
1298
1402
  }
1299
1403
  function ReaderBlock({ id }) {
1300
1404
  const document2 = useReaderDocument();
1301
- return document2[id] ? /* @__PURE__ */ React63.createElement(BaseReaderBlock, __spreadValues({}, document2[id])) : null;
1405
+ return document2[id] ? /* @__PURE__ */ React65.createElement(BaseReaderBlock, __spreadValues({}, document2[id])) : null;
1302
1406
  }
1303
1407
  var READER_DICTIONARY = buildBlockConfigurationDictionary({
1304
1408
  ColumnsContainer: {
@@ -1338,6 +1442,10 @@ var READER_DICTIONARY = buildBlockConfigurationDictionary({
1338
1442
  schema: ImagePropsSchema,
1339
1443
  Component: image_default
1340
1444
  },
1445
+ Otp: {
1446
+ schema: OtpPropsSchema,
1447
+ Component: otp_default
1448
+ },
1341
1449
  Spacer: {
1342
1450
  schema: SpacerPropsSchema,
1343
1451
  Component: spacer_default
@@ -1355,13 +1463,13 @@ var ReaderBlockSchema = buildBlockConfigurationSchema(READER_DICTIONARY);
1355
1463
  var ReaderDocumentSchema = z.record(z.string(), ReaderBlockSchema);
1356
1464
  var BaseReaderBlock = buildBlockComponent(READER_DICTIONARY);
1357
1465
  function Reader({ document: document2, rootBlockId }) {
1358
- return /* @__PURE__ */ React63.createElement(ReaderContext.Provider, { value: document2 }, /* @__PURE__ */ React63.createElement(ReaderBlock, { id: rootBlockId }));
1466
+ return /* @__PURE__ */ React65.createElement(ReaderContext.Provider, { value: document2 }, /* @__PURE__ */ React65.createElement(ReaderBlock, { id: rootBlockId }));
1359
1467
  }
1360
1468
 
1361
1469
  // src/email-builder/renderers/render-to-static-markup.tsx
1362
1470
  function renderToStaticMarkup(document2, { rootBlockId, variables }) {
1363
1471
  const html2 = "<!DOCTYPE html>" + renderToStaticMarkup$1(
1364
- /* @__PURE__ */ React63.createElement("html", null, /* @__PURE__ */ React63.createElement("body", null, /* @__PURE__ */ React63.createElement(Reader, { document: document2, rootBlockId })))
1472
+ /* @__PURE__ */ React65.createElement("html", null, /* @__PURE__ */ React65.createElement("body", null, /* @__PURE__ */ React65.createElement(Reader, { document: document2, rootBlockId })))
1365
1473
  );
1366
1474
  if (!variables) return html2;
1367
1475
  return evaluateHandlebars(html2, variables);
@@ -1408,6 +1516,9 @@ function renderBlock(document2, blockId, lines) {
1408
1516
  case "Html":
1409
1517
  renderHtml(data, lines);
1410
1518
  break;
1519
+ case "Otp":
1520
+ renderOtp(data, lines);
1521
+ break;
1411
1522
  case "Divider":
1412
1523
  lines.push("");
1413
1524
  lines.push("---");
@@ -1489,6 +1600,13 @@ function renderAvatar(data, lines) {
1489
1600
  lines.push("");
1490
1601
  }
1491
1602
  }
1603
+ function renderOtp(data, lines) {
1604
+ var _a, _b;
1605
+ const code = (_b = (_a = data == null ? void 0 : data.props) == null ? void 0 : _a.code) != null ? _b : "";
1606
+ if (!code) return;
1607
+ lines.push(code);
1608
+ lines.push("");
1609
+ }
1492
1610
  function renderHtml(data, lines) {
1493
1611
  var _a, _b;
1494
1612
  const contents = (_b = (_a = data == null ? void 0 : data.props) == null ? void 0 : _a.contents) != null ? _b : "";
@@ -2308,7 +2426,7 @@ var EmailEditorProvider = ({
2308
2426
  setCurrentTemplateTags
2309
2427
  ]
2310
2428
  );
2311
- return /* @__PURE__ */ React63.createElement(EmailEditorContext.Provider, { value }, children);
2429
+ return /* @__PURE__ */ React65.createElement(EmailEditorContext.Provider, { value }, children);
2312
2430
  };
2313
2431
  var useEmailEditor = () => {
2314
2432
  const context = useContext(EmailEditorContext);
@@ -2322,7 +2440,7 @@ function EditorConfigProvider({
2322
2440
  config,
2323
2441
  children
2324
2442
  }) {
2325
- return /* @__PURE__ */ React63.createElement(EditorConfigContext.Provider, { value: config }, children);
2443
+ return /* @__PURE__ */ React65.createElement(EditorConfigContext.Provider, { value: config }, children);
2326
2444
  }
2327
2445
  function useEditorConfig() {
2328
2446
  return useContext(EditorConfigContext);
@@ -2332,7 +2450,7 @@ function ImageCallbacksProvider({
2332
2450
  callbacks,
2333
2451
  children
2334
2452
  }) {
2335
- return /* @__PURE__ */ React63.createElement(ImageCallbacksContext.Provider, { value: callbacks }, children);
2453
+ return /* @__PURE__ */ React65.createElement(ImageCallbacksContext.Provider, { value: callbacks }, children);
2336
2454
  }
2337
2455
  function useImageCallbacks() {
2338
2456
  return useContext(ImageCallbacksContext);
@@ -2358,14 +2476,14 @@ var TITLE_KEYS = {
2358
2476
  function BaseSidebarPanel({ title, children }) {
2359
2477
  const key = TITLE_KEYS[title];
2360
2478
  const displayTitle = key ? t(key, title) : title;
2361
- return /* @__PURE__ */ React63.createElement(Box, { p: 2 }, /* @__PURE__ */ React63.createElement(Typography, { variant: "overline", color: "text.secondary", sx: { display: "block", mb: 2 } }, displayTitle), /* @__PURE__ */ React63.createElement(Stack, { spacing: 5, mb: 3 }, children));
2479
+ return /* @__PURE__ */ React65.createElement(Box, { p: 2 }, /* @__PURE__ */ React65.createElement(Typography, { variant: "overline", color: "text.secondary", sx: { display: "block", mb: 2 } }, displayTitle), /* @__PURE__ */ React65.createElement(Stack, { spacing: 5, mb: 3 }, children));
2362
2480
  }
2363
2481
  function RadioGroupInput({ label, children, defaultValue, onChange }) {
2364
2482
  const [value, setValue] = useState(defaultValue);
2365
2483
  useEffect(() => {
2366
2484
  setValue(defaultValue);
2367
2485
  }, [defaultValue]);
2368
- return /* @__PURE__ */ React63.createElement(Stack, { alignItems: "flex-start" }, /* @__PURE__ */ React63.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React63.createElement(
2486
+ return /* @__PURE__ */ React65.createElement(Stack, { alignItems: "flex-start" }, /* @__PURE__ */ React65.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React65.createElement(
2369
2487
  ToggleButtonGroup,
2370
2488
  {
2371
2489
  exclusive: true,
@@ -2385,7 +2503,7 @@ function RadioGroupInput({ label, children, defaultValue, onChange }) {
2385
2503
  }
2386
2504
  function RawSliderInput(_a) {
2387
2505
  var _b = _a, { iconLabel, value, setValue, units } = _b, props = __objRest(_b, ["iconLabel", "value", "setValue", "units"]);
2388
- return /* @__PURE__ */ React63.createElement(Stack, { direction: "row", alignItems: "center", spacing: 2, justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React63.createElement(Box, { sx: { minWidth: 24, lineHeight: 1, flexShrink: 0 } }, iconLabel), /* @__PURE__ */ React63.createElement(
2506
+ return /* @__PURE__ */ React65.createElement(Stack, { direction: "row", alignItems: "center", spacing: 2, justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React65.createElement(Box, { sx: { minWidth: 24, lineHeight: 1, flexShrink: 0 } }, iconLabel), /* @__PURE__ */ React65.createElement(
2389
2507
  Slider,
2390
2508
  __spreadProps(__spreadValues({}, props), {
2391
2509
  value,
@@ -2396,14 +2514,14 @@ function RawSliderInput(_a) {
2396
2514
  setValue(value2);
2397
2515
  }
2398
2516
  })
2399
- ), /* @__PURE__ */ React63.createElement(Box, { sx: { minWidth: 32, textAlign: "right", flexShrink: 0 } }, /* @__PURE__ */ React63.createElement(Typography, { variant: "body2", color: "text.secondary", sx: { lineHeight: 1 } }, value, units)));
2517
+ ), /* @__PURE__ */ React65.createElement(Box, { sx: { minWidth: 32, textAlign: "right", flexShrink: 0 } }, /* @__PURE__ */ React65.createElement(Typography, { variant: "body2", color: "text.secondary", sx: { lineHeight: 1 } }, value, units)));
2400
2518
  }
2401
2519
 
2402
2520
  // src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/slider-input.tsx
2403
2521
  function SliderInput(_a) {
2404
2522
  var _b = _a, { label, defaultValue, onChange } = _b, props = __objRest(_b, ["label", "defaultValue", "onChange"]);
2405
2523
  const [value, setValue] = useState(defaultValue);
2406
- return /* @__PURE__ */ React63.createElement(Stack, { spacing: 1, alignItems: "flex-start" }, /* @__PURE__ */ React63.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React63.createElement(
2524
+ return /* @__PURE__ */ React65.createElement(Stack, { spacing: 1, alignItems: "flex-start" }, /* @__PURE__ */ React65.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React65.createElement(
2407
2525
  RawSliderInput,
2408
2526
  __spreadValues({
2409
2527
  value,
@@ -2420,7 +2538,7 @@ function TextInput({ helperText, label, placeholder, rows, InputProps: InputProp
2420
2538
  useEffect(() => {
2421
2539
  setValue(defaultValue);
2422
2540
  }, [defaultValue]);
2423
- return /* @__PURE__ */ React63.createElement(
2541
+ return /* @__PURE__ */ React65.createElement(
2424
2542
  TextField,
2425
2543
  {
2426
2544
  fullWidth: true,
@@ -2446,7 +2564,7 @@ var TILE_BUTTON = {
2446
2564
  };
2447
2565
  function Swatch({ paletteColors, value, onChange }) {
2448
2566
  const renderButton2 = (colorValue) => {
2449
- return /* @__PURE__ */ React63.createElement(
2567
+ return /* @__PURE__ */ React65.createElement(
2450
2568
  Button$1,
2451
2569
  {
2452
2570
  key: colorValue,
@@ -2465,7 +2583,7 @@ function Swatch({ paletteColors, value, onChange }) {
2465
2583
  }
2466
2584
  );
2467
2585
  };
2468
- return /* @__PURE__ */ React63.createElement(Box, { width: "100%", sx: { display: "grid", gap: 1, gridTemplateColumns: "1fr 1fr 1fr 1fr 1fr 1fr" } }, paletteColors.map((c) => renderButton2(c)));
2586
+ return /* @__PURE__ */ React65.createElement(Box, { width: "100%", sx: { display: "grid", gap: 1, gridTemplateColumns: "1fr 1fr 1fr 1fr 1fr 1fr" } }, paletteColors.map((c) => renderButton2(c)));
2469
2587
  }
2470
2588
 
2471
2589
  // src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/color-input/picker.tsx
@@ -2534,7 +2652,7 @@ var SX = {
2534
2652
  function Picker({ value, onChange }) {
2535
2653
  const { favoriteColors } = useEditorConfig();
2536
2654
  const hasFavorites = favoriteColors && favoriteColors.length > 0;
2537
- return /* @__PURE__ */ React63.createElement(Stack, { spacing: 1, sx: SX }, /* @__PURE__ */ React63.createElement(HexColorPicker, { color: value, onChange }), hasFavorites && /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(Swatch, { paletteColors: favoriteColors, value, onChange }), /* @__PURE__ */ React63.createElement(Divider$1, null)), /* @__PURE__ */ React63.createElement(Swatch, { paletteColors: DEFAULT_PRESET_COLORS, value, onChange }), /* @__PURE__ */ React63.createElement(Box, { pt: 1 }, /* @__PURE__ */ React63.createElement(HexColorInput, { prefixed: true, color: value, onChange })));
2655
+ return /* @__PURE__ */ React65.createElement(Stack, { spacing: 1, sx: SX }, /* @__PURE__ */ React65.createElement(HexColorPicker, { color: value, onChange }), hasFavorites && /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(Swatch, { paletteColors: favoriteColors, value, onChange }), /* @__PURE__ */ React65.createElement(Divider$1, null)), /* @__PURE__ */ React65.createElement(Swatch, { paletteColors: DEFAULT_PRESET_COLORS, value, onChange }), /* @__PURE__ */ React65.createElement(Box, { pt: 1 }, /* @__PURE__ */ React65.createElement(HexColorInput, { prefixed: true, color: value, onChange })));
2538
2656
  }
2539
2657
 
2540
2658
  // src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/color-input/base-color-input.tsx
@@ -2559,7 +2677,7 @@ function ColorInput({ label, defaultValue, onChange, nullable }) {
2559
2677
  if (typeof value !== "string" || value.trim().length === 0) {
2560
2678
  return null;
2561
2679
  }
2562
- return /* @__PURE__ */ React63.createElement(
2680
+ return /* @__PURE__ */ React65.createElement(
2563
2681
  ButtonBase,
2564
2682
  {
2565
2683
  onClick: () => {
@@ -2567,16 +2685,16 @@ function ColorInput({ label, defaultValue, onChange, nullable }) {
2567
2685
  onChange(null);
2568
2686
  }
2569
2687
  },
2570
- /* @__PURE__ */ React63.createElement(CloseOutlined, { fontSize: "small", sx: { color: "grey.600" } })
2688
+ /* @__PURE__ */ React65.createElement(CloseOutlined, { fontSize: "small", sx: { color: "grey.600" } })
2571
2689
  );
2572
2690
  };
2573
2691
  const renderOpenButton = () => {
2574
2692
  if (value) {
2575
- return /* @__PURE__ */ React63.createElement(ButtonBase, { onClick: handleClickOpen, sx: __spreadProps(__spreadValues({}, BUTTON_SX), { bgcolor: value }) });
2693
+ return /* @__PURE__ */ React65.createElement(ButtonBase, { onClick: handleClickOpen, sx: __spreadProps(__spreadValues({}, BUTTON_SX), { bgcolor: value }) });
2576
2694
  }
2577
- return /* @__PURE__ */ React63.createElement(ButtonBase, { onClick: handleClickOpen, sx: __spreadValues({}, BUTTON_SX) }, /* @__PURE__ */ React63.createElement(AddOutlined, { fontSize: "small" }));
2695
+ return /* @__PURE__ */ React65.createElement(ButtonBase, { onClick: handleClickOpen, sx: __spreadValues({}, BUTTON_SX) }, /* @__PURE__ */ React65.createElement(AddOutlined, { fontSize: "small" }));
2578
2696
  };
2579
- return /* @__PURE__ */ React63.createElement(Stack, { alignItems: "flex-start" }, /* @__PURE__ */ React63.createElement(InputLabel, { sx: { mb: 0.5 } }, label), /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 1 }, renderOpenButton(), renderResetButton()), /* @__PURE__ */ React63.createElement(
2697
+ return /* @__PURE__ */ React65.createElement(Stack, { alignItems: "flex-start" }, /* @__PURE__ */ React65.createElement(InputLabel, { sx: { mb: 0.5 } }, label), /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 1 }, renderOpenButton(), renderResetButton()), /* @__PURE__ */ React65.createElement(
2580
2698
  Menu,
2581
2699
  {
2582
2700
  anchorEl,
@@ -2586,7 +2704,7 @@ function ColorInput({ label, defaultValue, onChange, nullable }) {
2586
2704
  sx: { height: "auto", padding: 0 }
2587
2705
  }
2588
2706
  },
2589
- /* @__PURE__ */ React63.createElement(
2707
+ /* @__PURE__ */ React65.createElement(
2590
2708
  Picker,
2591
2709
  {
2592
2710
  value: value || "",
@@ -2601,10 +2719,10 @@ function ColorInput({ label, defaultValue, onChange, nullable }) {
2601
2719
 
2602
2720
  // src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/color-input/index.tsx
2603
2721
  function ColorInput2(props) {
2604
- return /* @__PURE__ */ React63.createElement(ColorInput, __spreadProps(__spreadValues({}, props), { nullable: false }));
2722
+ return /* @__PURE__ */ React65.createElement(ColorInput, __spreadProps(__spreadValues({}, props), { nullable: false }));
2605
2723
  }
2606
2724
  function NullableColorInput(props) {
2607
- return /* @__PURE__ */ React63.createElement(ColorInput, __spreadProps(__spreadValues({}, props), { nullable: true }));
2725
+ return /* @__PURE__ */ React65.createElement(ColorInput, __spreadProps(__spreadValues({}, props), { nullable: true }));
2608
2726
  }
2609
2727
 
2610
2728
  // src/editor/blocks/helpers/font-family.ts
@@ -2662,7 +2780,7 @@ function NullableFontFamily({ label, onChange, defaultValue }) {
2662
2780
  useEffect(() => {
2663
2781
  setValue(defaultValue != null ? defaultValue : "inherit");
2664
2782
  }, [defaultValue]);
2665
- return /* @__PURE__ */ React63.createElement(
2783
+ return /* @__PURE__ */ React65.createElement(
2666
2784
  TextField,
2667
2785
  {
2668
2786
  select: true,
@@ -2675,8 +2793,8 @@ function NullableFontFamily({ label, onChange, defaultValue }) {
2675
2793
  onChange(v === null ? null : v);
2676
2794
  }
2677
2795
  },
2678
- /* @__PURE__ */ React63.createElement(MenuItem, { value: "inherit" }, t("font-family.inherit", "Match email settings")),
2679
- FONT_FAMILIES.map((option) => /* @__PURE__ */ React63.createElement(MenuItem, { key: option.key, value: option.key, sx: { fontFamily: option.value } }, t(`font-family.${option.key.toLowerCase()}`, option.label)))
2796
+ /* @__PURE__ */ React65.createElement(MenuItem, { value: "inherit" }, t("font-family.inherit", "Match email settings")),
2797
+ FONT_FAMILIES.map((option) => /* @__PURE__ */ React65.createElement(MenuItem, { key: option.key, value: option.key, sx: { fontFamily: option.value } }, t(`font-family.${option.key.toLowerCase()}`, option.label)))
2680
2798
  );
2681
2799
  }
2682
2800
  function FontSizeInput({ label, defaultValue, onChange }) {
@@ -2688,10 +2806,10 @@ function FontSizeInput({ label, defaultValue, onChange }) {
2688
2806
  setValue(value2);
2689
2807
  onChange(value2);
2690
2808
  };
2691
- return /* @__PURE__ */ React63.createElement(Stack, { spacing: 1, alignItems: "flex-start" }, /* @__PURE__ */ React63.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React63.createElement(
2809
+ return /* @__PURE__ */ React65.createElement(Stack, { spacing: 1, alignItems: "flex-start" }, /* @__PURE__ */ React65.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React65.createElement(
2692
2810
  RawSliderInput,
2693
2811
  {
2694
- iconLabel: /* @__PURE__ */ React63.createElement(TextFieldsOutlined, { sx: { fontSize: 16 } }),
2812
+ iconLabel: /* @__PURE__ */ React65.createElement(TextFieldsOutlined, { sx: { fontSize: 16 } }),
2695
2813
  value,
2696
2814
  setValue: handleChange,
2697
2815
  units: "px",
@@ -2706,7 +2824,7 @@ function FontWeightInput({ label, defaultValue, onChange }) {
2706
2824
  useEffect(() => {
2707
2825
  setValue(defaultValue);
2708
2826
  }, [defaultValue]);
2709
- return /* @__PURE__ */ React63.createElement(
2827
+ return /* @__PURE__ */ React65.createElement(
2710
2828
  RadioGroupInput,
2711
2829
  {
2712
2830
  label,
@@ -2716,8 +2834,8 @@ function FontWeightInput({ label, defaultValue, onChange }) {
2716
2834
  onChange(fontWeight);
2717
2835
  }
2718
2836
  },
2719
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "normal" }, t("font-weight.regular", "Regular")),
2720
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "bold" }, t("font-weight.bold", "Bold"))
2837
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "normal" }, t("font-weight.regular", "Regular")),
2838
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "bold" }, t("font-weight.bold", "Bold"))
2721
2839
  );
2722
2840
  }
2723
2841
  function LetterSpacingInput({ label, defaultValue, onChange }) {
@@ -2729,10 +2847,10 @@ function LetterSpacingInput({ label, defaultValue, onChange }) {
2729
2847
  setValue(v);
2730
2848
  onChange(v === 0 ? null : v);
2731
2849
  };
2732
- return /* @__PURE__ */ React63.createElement(Stack, { spacing: 1, alignItems: "flex-start" }, /* @__PURE__ */ React63.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React63.createElement(
2850
+ return /* @__PURE__ */ React65.createElement(Stack, { spacing: 1, alignItems: "flex-start" }, /* @__PURE__ */ React65.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React65.createElement(
2733
2851
  RawSliderInput,
2734
2852
  {
2735
- iconLabel: /* @__PURE__ */ React63.createElement(SpaceBarOutlined, { sx: { fontSize: 16 } }),
2853
+ iconLabel: /* @__PURE__ */ React65.createElement(SpaceBarOutlined, { sx: { fontSize: 16 } }),
2736
2854
  value,
2737
2855
  setValue: handleChange,
2738
2856
  units: "px",
@@ -2751,10 +2869,10 @@ function LineHeightInput({ label, defaultValue, onChange }) {
2751
2869
  setValue(v);
2752
2870
  onChange(v === 0 ? null : v);
2753
2871
  };
2754
- return /* @__PURE__ */ React63.createElement(Stack, { spacing: 1, alignItems: "flex-start" }, /* @__PURE__ */ React63.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React63.createElement(
2872
+ return /* @__PURE__ */ React65.createElement(Stack, { spacing: 1, alignItems: "flex-start" }, /* @__PURE__ */ React65.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React65.createElement(
2755
2873
  RawSliderInput,
2756
2874
  {
2757
- iconLabel: /* @__PURE__ */ React63.createElement(FormatLineSpacingOutlined, { sx: { fontSize: 16 } }),
2875
+ iconLabel: /* @__PURE__ */ React65.createElement(FormatLineSpacingOutlined, { sx: { fontSize: 16 } }),
2758
2876
  value,
2759
2877
  setValue: handleChange,
2760
2878
  units: "",
@@ -2783,10 +2901,10 @@ function PaddingInput({ label, defaultValue, onChange }) {
2783
2901
  setValue(v);
2784
2902
  onChange(v);
2785
2903
  }
2786
- return /* @__PURE__ */ React63.createElement(Stack, { spacing: 2, alignItems: "flex-start", pb: 1 }, /* @__PURE__ */ React63.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React63.createElement(
2904
+ return /* @__PURE__ */ React65.createElement(Stack, { spacing: 2, alignItems: "flex-start", pb: 1 }, /* @__PURE__ */ React65.createElement(InputLabel, { shrink: true }, label), /* @__PURE__ */ React65.createElement(
2787
2905
  RawSliderInput,
2788
2906
  {
2789
- iconLabel: /* @__PURE__ */ React63.createElement(AlignVerticalTopOutlined, { sx: { fontSize: 16 } }),
2907
+ iconLabel: /* @__PURE__ */ React65.createElement(AlignVerticalTopOutlined, { sx: { fontSize: 16 } }),
2790
2908
  value: value.top,
2791
2909
  setValue: (num) => handleChange("top", num),
2792
2910
  units: "px",
@@ -2795,10 +2913,10 @@ function PaddingInput({ label, defaultValue, onChange }) {
2795
2913
  max: 80,
2796
2914
  marks: true
2797
2915
  }
2798
- ), /* @__PURE__ */ React63.createElement(
2916
+ ), /* @__PURE__ */ React65.createElement(
2799
2917
  RawSliderInput,
2800
2918
  {
2801
- iconLabel: /* @__PURE__ */ React63.createElement(AlignVerticalBottomOutlined, { sx: { fontSize: 16 } }),
2919
+ iconLabel: /* @__PURE__ */ React65.createElement(AlignVerticalBottomOutlined, { sx: { fontSize: 16 } }),
2802
2920
  value: value.bottom,
2803
2921
  setValue: (num) => handleChange("bottom", num),
2804
2922
  units: "px",
@@ -2807,10 +2925,10 @@ function PaddingInput({ label, defaultValue, onChange }) {
2807
2925
  max: 80,
2808
2926
  marks: true
2809
2927
  }
2810
- ), /* @__PURE__ */ React63.createElement(
2928
+ ), /* @__PURE__ */ React65.createElement(
2811
2929
  RawSliderInput,
2812
2930
  {
2813
- iconLabel: /* @__PURE__ */ React63.createElement(AlignHorizontalLeftOutlined, { sx: { fontSize: 16 } }),
2931
+ iconLabel: /* @__PURE__ */ React65.createElement(AlignHorizontalLeftOutlined, { sx: { fontSize: 16 } }),
2814
2932
  value: value.left,
2815
2933
  setValue: (num) => handleChange("left", num),
2816
2934
  units: "px",
@@ -2819,10 +2937,10 @@ function PaddingInput({ label, defaultValue, onChange }) {
2819
2937
  max: 80,
2820
2938
  marks: true
2821
2939
  }
2822
- ), /* @__PURE__ */ React63.createElement(
2940
+ ), /* @__PURE__ */ React65.createElement(
2823
2941
  RawSliderInput,
2824
2942
  {
2825
- iconLabel: /* @__PURE__ */ React63.createElement(AlignHorizontalRightOutlined, { sx: { fontSize: 16 } }),
2943
+ iconLabel: /* @__PURE__ */ React65.createElement(AlignHorizontalRightOutlined, { sx: { fontSize: 16 } }),
2826
2944
  value: value.right,
2827
2945
  setValue: (num) => handleChange("right", num),
2828
2946
  units: "px",
@@ -2838,7 +2956,7 @@ function TextAlignInput({ label, defaultValue, onChange }) {
2838
2956
  useEffect(() => {
2839
2957
  setValue(defaultValue != null ? defaultValue : "left");
2840
2958
  }, [defaultValue]);
2841
- return /* @__PURE__ */ React63.createElement(
2959
+ return /* @__PURE__ */ React65.createElement(
2842
2960
  RadioGroupInput,
2843
2961
  {
2844
2962
  label,
@@ -2848,9 +2966,9 @@ function TextAlignInput({ label, defaultValue, onChange }) {
2848
2966
  onChange(value2);
2849
2967
  }
2850
2968
  },
2851
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "left" }, /* @__PURE__ */ React63.createElement(FormatAlignLeftOutlined, { fontSize: "small" })),
2852
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "center" }, /* @__PURE__ */ React63.createElement(FormatAlignCenterOutlined, { fontSize: "small" })),
2853
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "right" }, /* @__PURE__ */ React63.createElement(FormatAlignRightOutlined, { fontSize: "small" }))
2969
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "left" }, /* @__PURE__ */ React65.createElement(FormatAlignLeftOutlined, { fontSize: "small" })),
2970
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "center" }, /* @__PURE__ */ React65.createElement(FormatAlignCenterOutlined, { fontSize: "small" })),
2971
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "right" }, /* @__PURE__ */ React65.createElement(FormatAlignRightOutlined, { fontSize: "small" }))
2854
2972
  );
2855
2973
  }
2856
2974
 
@@ -2863,14 +2981,14 @@ function SingleStylePropertyPanel({ name, value, onChange }) {
2863
2981
  };
2864
2982
  switch (name) {
2865
2983
  case "backgroundColor":
2866
- return /* @__PURE__ */ React63.createElement(NullableColorInput, { label: t("style.background-color", "Background color"), defaultValue, onChange: handleChange });
2984
+ return /* @__PURE__ */ React65.createElement(NullableColorInput, { label: t("style.background-color", "Background color"), defaultValue, onChange: handleChange });
2867
2985
  case "borderColor":
2868
- return /* @__PURE__ */ React63.createElement(NullableColorInput, { label: t("style.border-color", "Border color"), defaultValue, onChange: handleChange });
2986
+ return /* @__PURE__ */ React65.createElement(NullableColorInput, { label: t("style.border-color", "Border color"), defaultValue, onChange: handleChange });
2869
2987
  case "borderRadius":
2870
- return /* @__PURE__ */ React63.createElement(
2988
+ return /* @__PURE__ */ React65.createElement(
2871
2989
  SliderInput,
2872
2990
  {
2873
- iconLabel: /* @__PURE__ */ React63.createElement(RoundedCornerOutlined, null),
2991
+ iconLabel: /* @__PURE__ */ React65.createElement(RoundedCornerOutlined, null),
2874
2992
  units: "px",
2875
2993
  step: 4,
2876
2994
  marks: true,
@@ -2882,27 +3000,27 @@ function SingleStylePropertyPanel({ name, value, onChange }) {
2882
3000
  }
2883
3001
  );
2884
3002
  case "color":
2885
- return /* @__PURE__ */ React63.createElement(NullableColorInput, { label: t("style.text-color", "Text color"), defaultValue, onChange: handleChange });
3003
+ return /* @__PURE__ */ React65.createElement(NullableColorInput, { label: t("style.text-color", "Text color"), defaultValue, onChange: handleChange });
2886
3004
  case "fontFamily":
2887
- return /* @__PURE__ */ React63.createElement(NullableFontFamily, { label: t("style.font-family", "Font family"), defaultValue, onChange: handleChange });
3005
+ return /* @__PURE__ */ React65.createElement(NullableFontFamily, { label: t("style.font-family", "Font family"), defaultValue, onChange: handleChange });
2888
3006
  case "fontSize":
2889
- return /* @__PURE__ */ React63.createElement(FontSizeInput, { label: t("style.font-size", "Font size"), defaultValue, onChange: handleChange });
3007
+ return /* @__PURE__ */ React65.createElement(FontSizeInput, { label: t("style.font-size", "Font size"), defaultValue, onChange: handleChange });
2890
3008
  case "fontWeight":
2891
- return /* @__PURE__ */ React63.createElement(FontWeightInput, { label: t("style.font-weight", "Font weight"), defaultValue, onChange: handleChange });
3009
+ return /* @__PURE__ */ React65.createElement(FontWeightInput, { label: t("style.font-weight", "Font weight"), defaultValue, onChange: handleChange });
2892
3010
  case "lineHeight":
2893
- return /* @__PURE__ */ React63.createElement(LineHeightInput, { label: t("style.line-height", "Line height"), defaultValue, onChange: handleChange });
3011
+ return /* @__PURE__ */ React65.createElement(LineHeightInput, { label: t("style.line-height", "Line height"), defaultValue, onChange: handleChange });
2894
3012
  case "letterSpacing":
2895
- return /* @__PURE__ */ React63.createElement(LetterSpacingInput, { label: t("style.letter-spacing", "Letter spacing"), defaultValue, onChange: handleChange });
3013
+ return /* @__PURE__ */ React65.createElement(LetterSpacingInput, { label: t("style.letter-spacing", "Letter spacing"), defaultValue, onChange: handleChange });
2896
3014
  case "textAlign":
2897
- return /* @__PURE__ */ React63.createElement(TextAlignInput, { label: t("style.alignment", "Alignment"), defaultValue, onChange: handleChange });
3015
+ return /* @__PURE__ */ React65.createElement(TextAlignInput, { label: t("style.alignment", "Alignment"), defaultValue, onChange: handleChange });
2898
3016
  case "padding":
2899
- return /* @__PURE__ */ React63.createElement(PaddingInput, { label: t("style.padding", "Padding"), defaultValue, onChange: handleChange });
3017
+ return /* @__PURE__ */ React65.createElement(PaddingInput, { label: t("style.padding", "Padding"), defaultValue, onChange: handleChange });
2900
3018
  }
2901
3019
  }
2902
3020
 
2903
3021
  // src/app/inspector-drawer/configuration-panel/input-panels/helpers/style-inputs/multi-style-property-panel.tsx
2904
3022
  function MultiStylePropertyPanel({ names, value, onChange }) {
2905
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, names.map((name) => /* @__PURE__ */ React63.createElement(SingleStylePropertyPanel, { key: name, name, value: value || {}, onChange })));
3023
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, names.map((name) => /* @__PURE__ */ React65.createElement(SingleStylePropertyPanel, { key: name, name, value: value || {}, onChange })));
2906
3024
  }
2907
3025
 
2908
3026
  // src/app/inspector-drawer/configuration-panel/input-panels/avatar-sidebar-panel.tsx
@@ -2922,11 +3040,11 @@ function AvatarSidebarPanel({ data, setData }) {
2922
3040
  const imageUrl = (_d = (_c = data.props) == null ? void 0 : _c.imageUrl) != null ? _d : AvatarPropsDefaults.imageUrl;
2923
3041
  const alt = (_f = (_e = data.props) == null ? void 0 : _e.alt) != null ? _f : AvatarPropsDefaults.alt;
2924
3042
  const shape = (_h = (_g = data.props) == null ? void 0 : _g.shape) != null ? _h : AvatarPropsDefaults.shape;
2925
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Avatar block" }, /* @__PURE__ */ React63.createElement(
3043
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Avatar block" }, /* @__PURE__ */ React65.createElement(
2926
3044
  SliderInput,
2927
3045
  {
2928
3046
  label: t("field.size", "Size"),
2929
- iconLabel: /* @__PURE__ */ React63.createElement(AspectRatioOutlined, { sx: { color: "text.secondary" } }),
3047
+ iconLabel: /* @__PURE__ */ React65.createElement(AspectRatioOutlined, { sx: { color: "text.secondary" } }),
2930
3048
  units: "px",
2931
3049
  step: 3,
2932
3050
  min: 32,
@@ -2936,7 +3054,7 @@ function AvatarSidebarPanel({ data, setData }) {
2936
3054
  updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { size: size2 }) }));
2937
3055
  }
2938
3056
  }
2939
- ), /* @__PURE__ */ React63.createElement(
3057
+ ), /* @__PURE__ */ React65.createElement(
2940
3058
  RadioGroupInput,
2941
3059
  {
2942
3060
  label: t("avatar.shape", "Shape"),
@@ -2945,10 +3063,10 @@ function AvatarSidebarPanel({ data, setData }) {
2945
3063
  updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { shape: shape2 }) }));
2946
3064
  }
2947
3065
  },
2948
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "circle" }, t("signature.shape.circle", "Circle")),
2949
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "square" }, t("signature.shape.square", "Square")),
2950
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "rounded" }, t("signature.shape.rounded", "Rounded"))
2951
- ), /* @__PURE__ */ React63.createElement(
3066
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "circle" }, t("signature.shape.circle", "Circle")),
3067
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "square" }, t("signature.shape.square", "Square")),
3068
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "rounded" }, t("signature.shape.rounded", "Rounded"))
3069
+ ), /* @__PURE__ */ React65.createElement(
2952
3070
  TextInput,
2953
3071
  {
2954
3072
  label: t("signature.image-url", "Image URL"),
@@ -2957,7 +3075,7 @@ function AvatarSidebarPanel({ data, setData }) {
2957
3075
  updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { imageUrl: imageUrl2 }) }));
2958
3076
  }
2959
3077
  }
2960
- ), /* @__PURE__ */ React63.createElement(
3078
+ ), /* @__PURE__ */ React65.createElement(
2961
3079
  TextInput,
2962
3080
  {
2963
3081
  label: t("image.alt-text", "Alt text"),
@@ -2966,7 +3084,7 @@ function AvatarSidebarPanel({ data, setData }) {
2966
3084
  updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { alt: alt2 }) }));
2967
3085
  }
2968
3086
  }
2969
- ), /* @__PURE__ */ React63.createElement(
3087
+ ), /* @__PURE__ */ React65.createElement(
2970
3088
  MultiStylePropertyPanel,
2971
3089
  {
2972
3090
  names: ["textAlign", "padding"],
@@ -2994,65 +3112,65 @@ function ButtonSidebarPanel({ data, setData }) {
2994
3112
  const buttonStyle = (_j = (_i = data.props) == null ? void 0 : _i.buttonStyle) != null ? _j : ButtonPropsDefaults.buttonStyle;
2995
3113
  const buttonTextColor = (_l = (_k = data.props) == null ? void 0 : _k.buttonTextColor) != null ? _l : ButtonPropsDefaults.buttonTextColor;
2996
3114
  const buttonBackgroundColor = (_n = (_m = data.props) == null ? void 0 : _m.buttonBackgroundColor) != null ? _n : ButtonPropsDefaults.buttonBackgroundColor;
2997
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Button block" }, /* @__PURE__ */ React63.createElement(
3115
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Button block" }, /* @__PURE__ */ React65.createElement(
2998
3116
  TextInput,
2999
3117
  {
3000
3118
  label: t("field.text", "Text"),
3001
3119
  defaultValue: text,
3002
3120
  onChange: (text2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { text: text2 }) }))
3003
3121
  }
3004
- ), /* @__PURE__ */ React63.createElement(
3122
+ ), /* @__PURE__ */ React65.createElement(
3005
3123
  TextInput,
3006
3124
  {
3007
3125
  label: t("field.url", "Url"),
3008
3126
  defaultValue: url,
3009
3127
  onChange: (url2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { url: url2 }) }))
3010
3128
  }
3011
- ), /* @__PURE__ */ React63.createElement(
3129
+ ), /* @__PURE__ */ React65.createElement(
3012
3130
  RadioGroupInput,
3013
3131
  {
3014
3132
  label: t("field.width", "Width"),
3015
3133
  defaultValue: fullWidth ? "FULL_WIDTH" : "AUTO",
3016
3134
  onChange: (v) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { fullWidth: v === "FULL_WIDTH" }) }))
3017
3135
  },
3018
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "FULL_WIDTH" }, t("button.width.full", "Full")),
3019
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "AUTO" }, t("button.width.auto", "Auto"))
3020
- ), /* @__PURE__ */ React63.createElement(
3136
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "FULL_WIDTH" }, t("button.width.full", "Full")),
3137
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "AUTO" }, t("button.width.auto", "Auto"))
3138
+ ), /* @__PURE__ */ React65.createElement(
3021
3139
  RadioGroupInput,
3022
3140
  {
3023
3141
  label: t("field.size", "Size"),
3024
3142
  defaultValue: size,
3025
3143
  onChange: (size2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { size: size2 }) }))
3026
3144
  },
3027
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "x-small" }, t("size.xs", "Xs")),
3028
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "small" }, t("size.sm", "Sm")),
3029
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "medium" }, t("size.md", "Md")),
3030
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "large" }, t("size.lg", "Lg"))
3031
- ), /* @__PURE__ */ React63.createElement(
3145
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "x-small" }, t("size.xs", "Xs")),
3146
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "small" }, t("size.sm", "Sm")),
3147
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "medium" }, t("size.md", "Md")),
3148
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "large" }, t("size.lg", "Lg"))
3149
+ ), /* @__PURE__ */ React65.createElement(
3032
3150
  RadioGroupInput,
3033
3151
  {
3034
3152
  label: t("field.style", "Style"),
3035
3153
  defaultValue: buttonStyle,
3036
3154
  onChange: (buttonStyle2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { buttonStyle: buttonStyle2 }) }))
3037
3155
  },
3038
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "rectangle" }, t("button.style.rectangle", "Rectangle")),
3039
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "rounded" }, t("button.style.rounded", "Rounded")),
3040
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "pill" }, t("button.style.pill", "Pill"))
3041
- ), /* @__PURE__ */ React63.createElement(
3156
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "rectangle" }, t("button.style.rectangle", "Rectangle")),
3157
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "rounded" }, t("button.style.rounded", "Rounded")),
3158
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "pill" }, t("button.style.pill", "Pill"))
3159
+ ), /* @__PURE__ */ React65.createElement(
3042
3160
  ColorInput2,
3043
3161
  {
3044
3162
  label: t("style.text-color", "Text color"),
3045
3163
  defaultValue: buttonTextColor,
3046
3164
  onChange: (buttonTextColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { buttonTextColor: buttonTextColor2 }) }))
3047
3165
  }
3048
- ), /* @__PURE__ */ React63.createElement(
3166
+ ), /* @__PURE__ */ React65.createElement(
3049
3167
  ColorInput2,
3050
3168
  {
3051
3169
  label: t("button.color", "Button color"),
3052
3170
  defaultValue: buttonBackgroundColor,
3053
3171
  onChange: (buttonBackgroundColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { buttonBackgroundColor: buttonBackgroundColor2 }) }))
3054
3172
  }
3055
- ), /* @__PURE__ */ React63.createElement(
3173
+ ), /* @__PURE__ */ React65.createElement(
3056
3174
  MultiStylePropertyPanel,
3057
3175
  {
3058
3176
  names: [
@@ -3087,7 +3205,7 @@ function TextDimensionInput({ label, defaultValue, onChange }) {
3087
3205
  const value = parseInt(ev.target.value);
3088
3206
  onChange(isNaN(value) ? null : value);
3089
3207
  };
3090
- return /* @__PURE__ */ React63.createElement(
3208
+ return /* @__PURE__ */ React65.createElement(
3091
3209
  TextField,
3092
3210
  {
3093
3211
  fullWidth: true,
@@ -3098,7 +3216,7 @@ function TextDimensionInput({ label, defaultValue, onChange }) {
3098
3216
  placeholder: "auto",
3099
3217
  size: "small",
3100
3218
  InputProps: {
3101
- endAdornment: /* @__PURE__ */ React63.createElement(Typography, { variant: "body2", color: "text.secondary" }, "px")
3219
+ endAdornment: /* @__PURE__ */ React65.createElement(Typography, { variant: "body2", color: "text.secondary" }, "px")
3102
3220
  }
3103
3221
  }
3104
3222
  );
@@ -3120,7 +3238,7 @@ function ColumnWidthsInput({ defaultValue, onChange }) {
3120
3238
  };
3121
3239
  let column3 = null;
3122
3240
  {
3123
- column3 = /* @__PURE__ */ React63.createElement(
3241
+ column3 = /* @__PURE__ */ React65.createElement(
3124
3242
  TextDimensionInput,
3125
3243
  {
3126
3244
  label: "Column 3",
@@ -3131,7 +3249,7 @@ function ColumnWidthsInput({ defaultValue, onChange }) {
3131
3249
  }
3132
3250
  );
3133
3251
  }
3134
- return /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 1 }, /* @__PURE__ */ React63.createElement(
3252
+ return /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 1 }, /* @__PURE__ */ React65.createElement(
3135
3253
  TextDimensionInput,
3136
3254
  {
3137
3255
  label: "Column 1",
@@ -3140,7 +3258,7 @@ function ColumnWidthsInput({ defaultValue, onChange }) {
3140
3258
  setIndexValue(0, v);
3141
3259
  }
3142
3260
  }
3143
- ), /* @__PURE__ */ React63.createElement(
3261
+ ), /* @__PURE__ */ React65.createElement(
3144
3262
  TextDimensionInput,
3145
3263
  {
3146
3264
  label: "Column 2",
@@ -3165,7 +3283,7 @@ function ColumnsContainerPanel({ data, setData }) {
3165
3283
  setErrors(res.error);
3166
3284
  }
3167
3285
  };
3168
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Columns block" }, /* @__PURE__ */ React63.createElement(
3286
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Columns block" }, /* @__PURE__ */ React65.createElement(
3169
3287
  RadioGroupInput,
3170
3288
  {
3171
3289
  label: t("columns.count", "Number of columns"),
@@ -3174,9 +3292,9 @@ function ColumnsContainerPanel({ data, setData }) {
3174
3292
  updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { columnsCount: v === "2" ? 2 : 3 }) }));
3175
3293
  }
3176
3294
  },
3177
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "2" }, "2"),
3178
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "3" }, "3")
3179
- ), /* @__PURE__ */ React63.createElement(
3295
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "2" }, "2"),
3296
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "3" }, "3")
3297
+ ), /* @__PURE__ */ React65.createElement(
3180
3298
  ColumnWidthsInput,
3181
3299
  {
3182
3300
  defaultValue: (_b = data.props) == null ? void 0 : _b.fixedWidths,
@@ -3184,11 +3302,11 @@ function ColumnsContainerPanel({ data, setData }) {
3184
3302
  updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { fixedWidths }) }));
3185
3303
  }
3186
3304
  }
3187
- ), /* @__PURE__ */ React63.createElement(
3305
+ ), /* @__PURE__ */ React65.createElement(
3188
3306
  SliderInput,
3189
3307
  {
3190
3308
  label: t("columns.gap", "Columns gap"),
3191
- iconLabel: /* @__PURE__ */ React63.createElement(SpaceBarOutlined, { sx: { color: "text.secondary" } }),
3309
+ iconLabel: /* @__PURE__ */ React65.createElement(SpaceBarOutlined, { sx: { color: "text.secondary" } }),
3192
3310
  units: "px",
3193
3311
  step: 4,
3194
3312
  marks: true,
@@ -3197,7 +3315,7 @@ function ColumnsContainerPanel({ data, setData }) {
3197
3315
  defaultValue: (_d = (_c = data.props) == null ? void 0 : _c.columnsGap) != null ? _d : 0,
3198
3316
  onChange: (columnsGap) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { columnsGap }) }))
3199
3317
  }
3200
- ), /* @__PURE__ */ React63.createElement(
3318
+ ), /* @__PURE__ */ React65.createElement(
3201
3319
  RadioGroupInput,
3202
3320
  {
3203
3321
  label: t("style.alignment", "Alignment"),
@@ -3206,10 +3324,10 @@ function ColumnsContainerPanel({ data, setData }) {
3206
3324
  updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { contentAlignment }) }));
3207
3325
  }
3208
3326
  },
3209
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "top" }, /* @__PURE__ */ React63.createElement(VerticalAlignTopOutlined, { fontSize: "small" })),
3210
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "middle" }, /* @__PURE__ */ React63.createElement(VerticalAlignCenterOutlined, { fontSize: "small" })),
3211
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "bottom" }, /* @__PURE__ */ React63.createElement(VerticalAlignBottomOutlined, { fontSize: "small" }))
3212
- ), /* @__PURE__ */ React63.createElement(
3327
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "top" }, /* @__PURE__ */ React65.createElement(VerticalAlignTopOutlined, { fontSize: "small" })),
3328
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "middle" }, /* @__PURE__ */ React65.createElement(VerticalAlignCenterOutlined, { fontSize: "small" })),
3329
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "bottom" }, /* @__PURE__ */ React65.createElement(VerticalAlignBottomOutlined, { fontSize: "small" }))
3330
+ ), /* @__PURE__ */ React65.createElement(
3213
3331
  MultiStylePropertyPanel,
3214
3332
  {
3215
3333
  names: ["backgroundColor", "padding"],
@@ -3238,7 +3356,7 @@ function ContainerSidebarPanel({ data, setData }) {
3238
3356
  setErrors(res.error);
3239
3357
  }
3240
3358
  };
3241
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Container block" }, /* @__PURE__ */ React63.createElement(
3359
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Container block" }, /* @__PURE__ */ React65.createElement(
3242
3360
  MultiStylePropertyPanel,
3243
3361
  {
3244
3362
  names: ["backgroundColor", "borderColor", "borderRadius", "padding"],
@@ -3261,18 +3379,18 @@ function DividerSidebarPanel({ data, setData }) {
3261
3379
  };
3262
3380
  const lineColor = (_b = (_a = data.props) == null ? void 0 : _a.lineColor) != null ? _b : DividerPropsDefaults.lineColor;
3263
3381
  const lineHeight = (_d = (_c = data.props) == null ? void 0 : _c.lineHeight) != null ? _d : DividerPropsDefaults.lineHeight;
3264
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Divider block" }, /* @__PURE__ */ React63.createElement(
3382
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Divider block" }, /* @__PURE__ */ React65.createElement(
3265
3383
  ColorInput2,
3266
3384
  {
3267
3385
  label: t("divider.color", "Color"),
3268
3386
  defaultValue: lineColor,
3269
3387
  onChange: (lineColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { lineColor: lineColor2 }) }))
3270
3388
  }
3271
- ), /* @__PURE__ */ React63.createElement(
3389
+ ), /* @__PURE__ */ React65.createElement(
3272
3390
  SliderInput,
3273
3391
  {
3274
3392
  label: t("field.height", "Height"),
3275
- iconLabel: /* @__PURE__ */ React63.createElement(HeightOutlined, { sx: { color: "text.secondary" } }),
3393
+ iconLabel: /* @__PURE__ */ React65.createElement(HeightOutlined, { sx: { color: "text.secondary" } }),
3276
3394
  units: "px",
3277
3395
  step: 1,
3278
3396
  min: 1,
@@ -3280,7 +3398,7 @@ function DividerSidebarPanel({ data, setData }) {
3280
3398
  defaultValue: lineHeight,
3281
3399
  onChange: (lineHeight2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { lineHeight: lineHeight2 }) }))
3282
3400
  }
3283
- ), /* @__PURE__ */ React63.createElement(
3401
+ ), /* @__PURE__ */ React65.createElement(
3284
3402
  MultiStylePropertyPanel,
3285
3403
  {
3286
3404
  names: ["backgroundColor", "padding"],
@@ -3289,8 +3407,8 @@ function DividerSidebarPanel({ data, setData }) {
3289
3407
  }
3290
3408
  ));
3291
3409
  }
3292
- var COLOR_SCHEMA10 = z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();
3293
- var FONT_FAMILY_SCHEMA7 = z.enum([
3410
+ var COLOR_SCHEMA11 = z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();
3411
+ var FONT_FAMILY_SCHEMA8 = z.enum([
3294
3412
  "MODERN_SANS",
3295
3413
  "BOOK_SANS",
3296
3414
  "ORGANIC_SANS",
@@ -3307,13 +3425,13 @@ var TemplateVariableSchema2 = z.object({
3307
3425
  sampleValue: z.string().optional().nullable()
3308
3426
  });
3309
3427
  var EmailLayoutPropsSchema2 = z.object({
3310
- backdropColor: COLOR_SCHEMA10,
3428
+ backdropColor: COLOR_SCHEMA11,
3311
3429
  backdropDisabled: z.boolean().optional().nullable(),
3312
- borderColor: COLOR_SCHEMA10,
3430
+ borderColor: COLOR_SCHEMA11,
3313
3431
  borderRadius: z.number().optional().nullable(),
3314
- canvasColor: COLOR_SCHEMA10,
3315
- textColor: COLOR_SCHEMA10,
3316
- fontFamily: FONT_FAMILY_SCHEMA7,
3432
+ canvasColor: COLOR_SCHEMA11,
3433
+ textColor: COLOR_SCHEMA11,
3434
+ fontFamily: FONT_FAMILY_SCHEMA8,
3317
3435
  childrenIds: z.array(z.string()).optional().nullable(),
3318
3436
  subject: z.string().optional().nullable(),
3319
3437
  variables: z.array(TemplateVariableSchema2).optional().nullable()
@@ -3324,11 +3442,11 @@ function BooleanInput({ label, defaultValue, onChange }) {
3324
3442
  useEffect(() => {
3325
3443
  setValue(defaultValue);
3326
3444
  }, [defaultValue]);
3327
- return /* @__PURE__ */ React63.createElement(
3445
+ return /* @__PURE__ */ React65.createElement(
3328
3446
  FormControlLabel,
3329
3447
  {
3330
3448
  label,
3331
- control: /* @__PURE__ */ React63.createElement(
3449
+ control: /* @__PURE__ */ React65.createElement(
3332
3450
  Switch,
3333
3451
  {
3334
3452
  checked: value,
@@ -3356,38 +3474,38 @@ function EmailLayoutSidebarFields({ data, setData }) {
3356
3474
  }
3357
3475
  };
3358
3476
  const backdropDisabled = (_a = data.backdropDisabled) != null ? _a : false;
3359
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Global" }, /* @__PURE__ */ React63.createElement(
3477
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Global" }, /* @__PURE__ */ React65.createElement(
3360
3478
  BooleanInput,
3361
3479
  {
3362
3480
  label: t("global.disable-backdrop", "Disable backdrop"),
3363
3481
  defaultValue: backdropDisabled,
3364
3482
  onChange: (backdropDisabled2) => updateData(__spreadProps(__spreadValues({}, data), { backdropDisabled: backdropDisabled2 }))
3365
3483
  }
3366
- ), !backdropDisabled && /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(
3484
+ ), !backdropDisabled && /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(
3367
3485
  ColorInput2,
3368
3486
  {
3369
3487
  label: t("global.backdrop-color", "Backdrop color"),
3370
3488
  defaultValue: (_b = data.backdropColor) != null ? _b : "#F5F5F5",
3371
3489
  onChange: (backdropColor) => updateData(__spreadProps(__spreadValues({}, data), { backdropColor }))
3372
3490
  }
3373
- ), /* @__PURE__ */ React63.createElement(
3491
+ ), /* @__PURE__ */ React65.createElement(
3374
3492
  ColorInput2,
3375
3493
  {
3376
3494
  label: t("global.canvas-color", "Canvas color"),
3377
3495
  defaultValue: (_c = data.canvasColor) != null ? _c : "#FFFFFF",
3378
3496
  onChange: (canvasColor) => updateData(__spreadProps(__spreadValues({}, data), { canvasColor }))
3379
3497
  }
3380
- ), /* @__PURE__ */ React63.createElement(
3498
+ ), /* @__PURE__ */ React65.createElement(
3381
3499
  NullableColorInput,
3382
3500
  {
3383
3501
  label: t("global.canvas-border-color", "Canvas border color"),
3384
3502
  defaultValue: (_d = data.borderColor) != null ? _d : null,
3385
3503
  onChange: (borderColor) => updateData(__spreadProps(__spreadValues({}, data), { borderColor }))
3386
3504
  }
3387
- ), /* @__PURE__ */ React63.createElement(
3505
+ ), /* @__PURE__ */ React65.createElement(
3388
3506
  SliderInput,
3389
3507
  {
3390
- iconLabel: /* @__PURE__ */ React63.createElement(RoundedCornerOutlined, null),
3508
+ iconLabel: /* @__PURE__ */ React65.createElement(RoundedCornerOutlined, null),
3391
3509
  units: "px",
3392
3510
  step: 4,
3393
3511
  marks: true,
@@ -3397,14 +3515,14 @@ function EmailLayoutSidebarFields({ data, setData }) {
3397
3515
  defaultValue: (_e = data.borderRadius) != null ? _e : 0,
3398
3516
  onChange: (borderRadius) => updateData(__spreadProps(__spreadValues({}, data), { borderRadius }))
3399
3517
  }
3400
- )), /* @__PURE__ */ React63.createElement(
3518
+ )), /* @__PURE__ */ React65.createElement(
3401
3519
  NullableFontFamily,
3402
3520
  {
3403
3521
  label: t("style.font-family", "Font family"),
3404
3522
  defaultValue: "MODERN_SANS",
3405
3523
  onChange: (fontFamily) => updateData(__spreadProps(__spreadValues({}, data), { fontFamily }))
3406
3524
  }
3407
- ), /* @__PURE__ */ React63.createElement(
3525
+ ), /* @__PURE__ */ React65.createElement(
3408
3526
  ColorInput2,
3409
3527
  {
3410
3528
  label: t("style.text-color", "Text color"),
@@ -3425,7 +3543,7 @@ function HeadingSidebarPanel({ data, setData }) {
3425
3543
  setErrors(res.error);
3426
3544
  }
3427
3545
  };
3428
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Heading block" }, /* @__PURE__ */ React63.createElement(
3546
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Heading block" }, /* @__PURE__ */ React65.createElement(
3429
3547
  TextInput,
3430
3548
  {
3431
3549
  label: t("field.content", "Content"),
@@ -3435,7 +3553,7 @@ function HeadingSidebarPanel({ data, setData }) {
3435
3553
  updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { text }) }));
3436
3554
  }
3437
3555
  }
3438
- ), /* @__PURE__ */ React63.createElement(
3556
+ ), /* @__PURE__ */ React65.createElement(
3439
3557
  RadioGroupInput,
3440
3558
  {
3441
3559
  label: t("field.level", "Level"),
@@ -3444,10 +3562,10 @@ function HeadingSidebarPanel({ data, setData }) {
3444
3562
  updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { level }) }));
3445
3563
  }
3446
3564
  },
3447
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "h1" }, "H1"),
3448
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "h2" }, "H2"),
3449
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "h3" }, "H3")
3450
- ), /* @__PURE__ */ React63.createElement(
3565
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "h1" }, "H1"),
3566
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "h2" }, "H2"),
3567
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "h3" }, "H3")
3568
+ ), /* @__PURE__ */ React65.createElement(
3451
3569
  MultiStylePropertyPanel,
3452
3570
  {
3453
3571
  names: [
@@ -3477,7 +3595,7 @@ function HtmlSidebarPanel({ data, setData }) {
3477
3595
  setErrors(res.error);
3478
3596
  }
3479
3597
  };
3480
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Html block" }, /* @__PURE__ */ React63.createElement(
3598
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Html block" }, /* @__PURE__ */ React65.createElement(
3481
3599
  TextInput,
3482
3600
  {
3483
3601
  label: t("field.content", "Content"),
@@ -3485,7 +3603,7 @@ function HtmlSidebarPanel({ data, setData }) {
3485
3603
  defaultValue: (_b = (_a = data.props) == null ? void 0 : _a.contents) != null ? _b : "",
3486
3604
  onChange: (contents) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { contents }) }))
3487
3605
  }
3488
- ), /* @__PURE__ */ React63.createElement(
3606
+ ), /* @__PURE__ */ React65.createElement(
3489
3607
  MultiStylePropertyPanel,
3490
3608
  {
3491
3609
  names: ["color", "backgroundColor", "fontFamily", "fontSize", "textAlign", "padding"],
@@ -3542,7 +3660,7 @@ function ImageLibraryDialog({ open, onClose, onPick }) {
3542
3660
  setBusy(false);
3543
3661
  }
3544
3662
  });
3545
- return /* @__PURE__ */ React63.createElement(Dialog, { open, onClose, maxWidth: "md", fullWidth: true }, /* @__PURE__ */ React63.createElement(DialogTitle, null, "Image library"), /* @__PURE__ */ React63.createElement(DialogContent, { dividers: true }, /* @__PURE__ */ React63.createElement(
3663
+ return /* @__PURE__ */ React65.createElement(Dialog, { open, onClose, maxWidth: "md", fullWidth: true }, /* @__PURE__ */ React65.createElement(DialogTitle, null, "Image library"), /* @__PURE__ */ React65.createElement(DialogContent, { dividers: true }, /* @__PURE__ */ React65.createElement(
3546
3664
  TextField,
3547
3665
  {
3548
3666
  fullWidth: true,
@@ -3552,11 +3670,11 @@ function ImageLibraryDialog({ open, onClose, onPick }) {
3552
3670
  onChange: (e) => setQuery(e.target.value),
3553
3671
  autoFocus: true,
3554
3672
  InputProps: {
3555
- startAdornment: /* @__PURE__ */ React63.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React63.createElement(SearchOutlined, { fontSize: "small" }))
3673
+ startAdornment: /* @__PURE__ */ React65.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React65.createElement(SearchOutlined, { fontSize: "small" }))
3556
3674
  },
3557
3675
  sx: { mb: 2 }
3558
3676
  }
3559
- ), error && /* @__PURE__ */ React63.createElement(Alert, { severity: "error", sx: { mb: 2 } }, error), busy && !images && /* @__PURE__ */ React63.createElement(Stack, { alignItems: "center", sx: { py: 4 } }, /* @__PURE__ */ React63.createElement(CircularProgress, { size: 28 })), filtered && filtered.length === 0 && /* @__PURE__ */ React63.createElement(Typography, { variant: "body2", sx: { color: "text.secondary", textAlign: "center", py: 4 } }, query ? "No images match your search." : "No images in the library yet."), filtered && filtered.length > 0 && /* @__PURE__ */ React63.createElement(
3677
+ ), error && /* @__PURE__ */ React65.createElement(Alert, { severity: "error", sx: { mb: 2 } }, error), busy && !images && /* @__PURE__ */ React65.createElement(Stack, { alignItems: "center", sx: { py: 4 } }, /* @__PURE__ */ React65.createElement(CircularProgress, { size: 28 })), filtered && filtered.length === 0 && /* @__PURE__ */ React65.createElement(Typography, { variant: "body2", sx: { color: "text.secondary", textAlign: "center", py: 4 } }, query ? "No images match your search." : "No images in the library yet."), filtered && filtered.length > 0 && /* @__PURE__ */ React65.createElement(
3560
3678
  Box,
3561
3679
  {
3562
3680
  sx: {
@@ -3565,7 +3683,7 @@ function ImageLibraryDialog({ open, onClose, onPick }) {
3565
3683
  gap: 1.5
3566
3684
  }
3567
3685
  },
3568
- filtered.map((img) => /* @__PURE__ */ React63.createElement(
3686
+ filtered.map((img) => /* @__PURE__ */ React65.createElement(
3569
3687
  ImageTile,
3570
3688
  {
3571
3689
  key: img.url,
@@ -3574,7 +3692,7 @@ function ImageLibraryDialog({ open, onClose, onPick }) {
3574
3692
  onDelete: deleteImage ? () => handleDelete(img.url) : void 0
3575
3693
  }
3576
3694
  ))
3577
- )), /* @__PURE__ */ React63.createElement(DialogActions, null, /* @__PURE__ */ React63.createElement(Button$1, { onClick: onClose }, "Close")));
3695
+ )), /* @__PURE__ */ React65.createElement(DialogActions, null, /* @__PURE__ */ React65.createElement(Button$1, { onClick: onClose }, "Close")));
3578
3696
  }
3579
3697
  function ImageTile({
3580
3698
  image,
@@ -3584,7 +3702,7 @@ function ImageTile({
3584
3702
  var _a, _b;
3585
3703
  const src = (_a = image.thumbnailUrl) != null ? _a : image.url;
3586
3704
  const label = image.alt || image.url.split("/").pop() || "image";
3587
- return /* @__PURE__ */ React63.createElement(
3705
+ return /* @__PURE__ */ React65.createElement(
3588
3706
  Box,
3589
3707
  {
3590
3708
  sx: {
@@ -3600,7 +3718,7 @@ function ImageTile({
3600
3718
  },
3601
3719
  onClick: onPick
3602
3720
  },
3603
- /* @__PURE__ */ React63.createElement(
3721
+ /* @__PURE__ */ React65.createElement(
3604
3722
  Box,
3605
3723
  {
3606
3724
  component: "img",
@@ -3609,8 +3727,8 @@ function ImageTile({
3609
3727
  sx: { display: "block", width: "100%", aspectRatio: "1 / 1", objectFit: "cover", backgroundColor: "#f5f5f5" }
3610
3728
  }
3611
3729
  ),
3612
- /* @__PURE__ */ React63.createElement(Box, { sx: { p: 0.75, fontSize: 11, color: "text.secondary", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" } }, label),
3613
- onDelete && /* @__PURE__ */ React63.createElement(Tooltip, { title: "Delete from library" }, /* @__PURE__ */ React63.createElement(
3730
+ /* @__PURE__ */ React65.createElement(Box, { sx: { p: 0.75, fontSize: 11, color: "text.secondary", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" } }, label),
3731
+ onDelete && /* @__PURE__ */ React65.createElement(Tooltip, { title: "Delete from library" }, /* @__PURE__ */ React65.createElement(
3614
3732
  IconButton,
3615
3733
  {
3616
3734
  size: "small",
@@ -3630,7 +3748,7 @@ function ImageTile({
3630
3748
  },
3631
3749
  "aria-label": "Delete image"
3632
3750
  },
3633
- /* @__PURE__ */ React63.createElement(DeleteOutline, { fontSize: "small" })
3751
+ /* @__PURE__ */ React65.createElement(DeleteOutline, { fontSize: "small" })
3634
3752
  ))
3635
3753
  );
3636
3754
  }
@@ -3683,13 +3801,13 @@ function ImageSidebarPanel({ data, setData }) {
3683
3801
  });
3684
3802
  const url = (_b = (_a = data.props) == null ? void 0 : _a.url) != null ? _b : "";
3685
3803
  const showHttpWarning = isHttpUrl(url);
3686
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Image block" }, (uploadImage || loadImages) && /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 1 }, uploadImage && /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(
3804
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Image block" }, (uploadImage || loadImages) && /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 1 }, uploadImage && /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(
3687
3805
  Button$1,
3688
3806
  {
3689
3807
  fullWidth: true,
3690
3808
  variant: "outlined",
3691
3809
  size: "small",
3692
- startIcon: uploading ? /* @__PURE__ */ React63.createElement(CircularProgress, { size: 14 }) : /* @__PURE__ */ React63.createElement(CloudUploadOutlined, { fontSize: "small" }),
3810
+ startIcon: uploading ? /* @__PURE__ */ React65.createElement(CircularProgress, { size: 14 }) : /* @__PURE__ */ React65.createElement(CloudUploadOutlined, { fontSize: "small" }),
3693
3811
  disabled: uploading,
3694
3812
  onClick: () => {
3695
3813
  var _a2;
@@ -3697,7 +3815,7 @@ function ImageSidebarPanel({ data, setData }) {
3697
3815
  }
3698
3816
  },
3699
3817
  uploading ? t("image.uploading", "Uploading\u2026") : t("image.upload", "Upload")
3700
- ), /* @__PURE__ */ React63.createElement(
3818
+ ), /* @__PURE__ */ React65.createElement(
3701
3819
  "input",
3702
3820
  {
3703
3821
  ref: fileInputRef,
@@ -3711,17 +3829,17 @@ function ImageSidebarPanel({ data, setData }) {
3711
3829
  if (file) yield handleFile(file);
3712
3830
  })
3713
3831
  }
3714
- )), loadImages && /* @__PURE__ */ React63.createElement(
3832
+ )), loadImages && /* @__PURE__ */ React65.createElement(
3715
3833
  Button$1,
3716
3834
  {
3717
3835
  fullWidth: true,
3718
3836
  variant: "outlined",
3719
3837
  size: "small",
3720
- startIcon: /* @__PURE__ */ React63.createElement(CollectionsOutlined, { fontSize: "small" }),
3838
+ startIcon: /* @__PURE__ */ React65.createElement(CollectionsOutlined, { fontSize: "small" }),
3721
3839
  onClick: () => setLibraryOpen(true)
3722
3840
  },
3723
3841
  t("image.library", "Library")
3724
- )), uploadError && /* @__PURE__ */ React63.createElement(Alert, { severity: "error", onClose: () => setUploadError(null), sx: { mt: 1 } }, uploadError), /* @__PURE__ */ React63.createElement(
3842
+ )), uploadError && /* @__PURE__ */ React65.createElement(Alert, { severity: "error", onClose: () => setUploadError(null), sx: { mt: 1 } }, uploadError), /* @__PURE__ */ React65.createElement(
3725
3843
  TextInput,
3726
3844
  {
3727
3845
  label: t("image.source-url", "Source URL"),
@@ -3731,14 +3849,14 @@ function ImageSidebarPanel({ data, setData }) {
3731
3849
  updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { url: next }) }));
3732
3850
  }
3733
3851
  }
3734
- ), showHttpWarning && /* @__PURE__ */ React63.createElement(Box, { sx: { mt: -1, mb: 1, display: "flex", alignItems: "flex-start", gap: 0.75 } }, /* @__PURE__ */ React63.createElement(ErrorOutlineOutlined, { fontSize: "small", sx: { color: "warning.main", mt: "2px" } }), /* @__PURE__ */ React63.createElement(Box, { sx: { fontSize: 12, color: "warning.dark" } }, t("image.http-warning", "Non-HTTPS URL: Gmail and other clients strip mixed content. Use https:// for reliable delivery."))), /* @__PURE__ */ React63.createElement(
3852
+ ), showHttpWarning && /* @__PURE__ */ React65.createElement(Box, { sx: { mt: -1, mb: 1, display: "flex", alignItems: "flex-start", gap: 0.75 } }, /* @__PURE__ */ React65.createElement(ErrorOutlineOutlined, { fontSize: "small", sx: { color: "warning.main", mt: "2px" } }), /* @__PURE__ */ React65.createElement(Box, { sx: { fontSize: 12, color: "warning.dark" } }, t("image.http-warning", "Non-HTTPS URL: Gmail and other clients strip mixed content. Use https:// for reliable delivery."))), /* @__PURE__ */ React65.createElement(
3735
3853
  TextInput,
3736
3854
  {
3737
3855
  label: t("image.alt-text", "Alt text"),
3738
3856
  defaultValue: (_d = (_c = data.props) == null ? void 0 : _c.alt) != null ? _d : "",
3739
3857
  onChange: (alt) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { alt }) }))
3740
3858
  }
3741
- ), /* @__PURE__ */ React63.createElement(
3859
+ ), /* @__PURE__ */ React65.createElement(
3742
3860
  TextInput,
3743
3861
  {
3744
3862
  label: t("image.link-href", "Click through URL"),
@@ -3748,38 +3866,38 @@ function ImageSidebarPanel({ data, setData }) {
3748
3866
  updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { linkHref }) }));
3749
3867
  }
3750
3868
  }
3751
- ), /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 2 }, /* @__PURE__ */ React63.createElement(
3869
+ ), /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 2 }, /* @__PURE__ */ React65.createElement(
3752
3870
  TextDimensionInput,
3753
3871
  {
3754
3872
  label: t("field.width", "Width"),
3755
3873
  defaultValue: (_g = data.props) == null ? void 0 : _g.width,
3756
3874
  onChange: (width) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { width }) }))
3757
3875
  }
3758
- ), /* @__PURE__ */ React63.createElement(
3876
+ ), /* @__PURE__ */ React65.createElement(
3759
3877
  TextDimensionInput,
3760
3878
  {
3761
3879
  label: t("field.height", "Height"),
3762
3880
  defaultValue: (_h = data.props) == null ? void 0 : _h.height,
3763
3881
  onChange: (height) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { height }) }))
3764
3882
  }
3765
- )), /* @__PURE__ */ React63.createElement(
3883
+ )), /* @__PURE__ */ React65.createElement(
3766
3884
  RadioGroupInput,
3767
3885
  {
3768
3886
  label: t("style.alignment", "Alignment"),
3769
3887
  defaultValue: (_j = (_i = data.props) == null ? void 0 : _i.contentAlignment) != null ? _j : "middle",
3770
3888
  onChange: (contentAlignment) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { contentAlignment }) }))
3771
3889
  },
3772
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "top" }, /* @__PURE__ */ React63.createElement(VerticalAlignTopOutlined, { fontSize: "small" })),
3773
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "middle" }, /* @__PURE__ */ React63.createElement(VerticalAlignCenterOutlined, { fontSize: "small" })),
3774
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "bottom" }, /* @__PURE__ */ React63.createElement(VerticalAlignBottomOutlined, { fontSize: "small" }))
3775
- ), /* @__PURE__ */ React63.createElement(
3890
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "top" }, /* @__PURE__ */ React65.createElement(VerticalAlignTopOutlined, { fontSize: "small" })),
3891
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "middle" }, /* @__PURE__ */ React65.createElement(VerticalAlignCenterOutlined, { fontSize: "small" })),
3892
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "bottom" }, /* @__PURE__ */ React65.createElement(VerticalAlignBottomOutlined, { fontSize: "small" }))
3893
+ ), /* @__PURE__ */ React65.createElement(
3776
3894
  MultiStylePropertyPanel,
3777
3895
  {
3778
3896
  names: ["backgroundColor", "textAlign", "padding"],
3779
3897
  value: data.style,
3780
3898
  onChange: (style) => updateData(__spreadProps(__spreadValues({}, data), { style }))
3781
3899
  }
3782
- ), loadImages && /* @__PURE__ */ React63.createElement(
3900
+ ), loadImages && /* @__PURE__ */ React65.createElement(
3783
3901
  ImageLibraryDialog,
3784
3902
  {
3785
3903
  open: libraryOpen,
@@ -3791,6 +3909,46 @@ function ImageSidebarPanel({ data, setData }) {
3791
3909
  }
3792
3910
  ));
3793
3911
  }
3912
+ function OtpSidebarPanel({ data, setData }) {
3913
+ var _a, _b;
3914
+ const [, setErrors] = useState(null);
3915
+ const updateData = (d) => {
3916
+ const res = OtpPropsSchema.safeParse(d);
3917
+ if (res.success) {
3918
+ setData(res.data);
3919
+ setErrors(null);
3920
+ } else {
3921
+ setErrors(res.error);
3922
+ }
3923
+ };
3924
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: t("otp.title", "OTP / Code block") }, /* @__PURE__ */ React65.createElement(
3925
+ TextInput,
3926
+ {
3927
+ label: t("otp.code", "Code"),
3928
+ rows: 1,
3929
+ defaultValue: (_b = (_a = data.props) == null ? void 0 : _a.code) != null ? _b : OtpPropsDefaults.code,
3930
+ onChange: (code) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { code }) }))
3931
+ }
3932
+ ), /* @__PURE__ */ React65.createElement(
3933
+ MultiStylePropertyPanel,
3934
+ {
3935
+ names: [
3936
+ "color",
3937
+ "backgroundColor",
3938
+ "borderColor",
3939
+ "borderRadius",
3940
+ "fontFamily",
3941
+ "fontSize",
3942
+ "fontWeight",
3943
+ "letterSpacing",
3944
+ "textAlign",
3945
+ "padding"
3946
+ ],
3947
+ value: data.style,
3948
+ onChange: (style) => updateData(__spreadProps(__spreadValues({}, data), { style }))
3949
+ }
3950
+ ));
3951
+ }
3794
3952
  function SignatureSidebarPanel({ data, setData }) {
3795
3953
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D;
3796
3954
  const [, setErrors] = useState(null);
@@ -3818,74 +3976,74 @@ function SignatureSidebarPanel({ data, setData }) {
3818
3976
  const nameColor = (_z = (_y = data.props) == null ? void 0 : _y.nameColor) != null ? _z : SignaturePropsDefaults.nameColor;
3819
3977
  const textColor = (_B = (_A = data.props) == null ? void 0 : _A.textColor) != null ? _B : SignaturePropsDefaults.textColor;
3820
3978
  const linkColor = (_D = (_C = data.props) == null ? void 0 : _C.linkColor) != null ? _D : SignaturePropsDefaults.linkColor;
3821
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Signature block" }, /* @__PURE__ */ React63.createElement(
3979
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Signature block" }, /* @__PURE__ */ React65.createElement(
3822
3980
  TextInput,
3823
3981
  {
3824
3982
  label: t("signature.greeting", "Greeting"),
3825
3983
  defaultValue: greeting,
3826
3984
  onChange: (greeting2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { greeting: greeting2 }) }))
3827
3985
  }
3828
- ), /* @__PURE__ */ React63.createElement(
3986
+ ), /* @__PURE__ */ React65.createElement(
3829
3987
  TextInput,
3830
3988
  {
3831
3989
  label: t("signature.name", "Name"),
3832
3990
  defaultValue: name,
3833
3991
  onChange: (name2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { name: name2 }) }))
3834
3992
  }
3835
- ), /* @__PURE__ */ React63.createElement(
3993
+ ), /* @__PURE__ */ React65.createElement(
3836
3994
  TextInput,
3837
3995
  {
3838
3996
  label: t("signature.title", "Title"),
3839
3997
  defaultValue: title,
3840
3998
  onChange: (title2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { title: title2 }) }))
3841
3999
  }
3842
- ), /* @__PURE__ */ React63.createElement(
4000
+ ), /* @__PURE__ */ React65.createElement(
3843
4001
  TextInput,
3844
4002
  {
3845
4003
  label: t("signature.company", "Company"),
3846
4004
  defaultValue: company,
3847
4005
  onChange: (company2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { company: company2 }) }))
3848
4006
  }
3849
- ), /* @__PURE__ */ React63.createElement(
4007
+ ), /* @__PURE__ */ React65.createElement(
3850
4008
  TextInput,
3851
4009
  {
3852
4010
  label: t("signature.address", "Address"),
3853
4011
  defaultValue: address,
3854
4012
  onChange: (address2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { address: address2 }) }))
3855
4013
  }
3856
- ), /* @__PURE__ */ React63.createElement(
4014
+ ), /* @__PURE__ */ React65.createElement(
3857
4015
  TextInput,
3858
4016
  {
3859
4017
  label: t("signature.email", "Email"),
3860
4018
  defaultValue: email,
3861
4019
  onChange: (email2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { email: email2 }) }))
3862
4020
  }
3863
- ), /* @__PURE__ */ React63.createElement(
4021
+ ), /* @__PURE__ */ React65.createElement(
3864
4022
  TextInput,
3865
4023
  {
3866
4024
  label: t("signature.phone", "Phone"),
3867
4025
  defaultValue: phone,
3868
4026
  onChange: (phone2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { phone: phone2 }) }))
3869
4027
  }
3870
- ), /* @__PURE__ */ React63.createElement(
4028
+ ), /* @__PURE__ */ React65.createElement(
3871
4029
  TextInput,
3872
4030
  {
3873
4031
  label: t("signature.website", "Website"),
3874
4032
  defaultValue: website,
3875
4033
  onChange: (website2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { website: website2 }) }))
3876
4034
  }
3877
- ), /* @__PURE__ */ React63.createElement(
4035
+ ), /* @__PURE__ */ React65.createElement(
3878
4036
  TextInput,
3879
4037
  {
3880
4038
  label: t("signature.image-url", "Image URL"),
3881
4039
  defaultValue: imageUrl,
3882
4040
  onChange: (imageUrl2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { imageUrl: imageUrl2 }) }))
3883
4041
  }
3884
- ), /* @__PURE__ */ React63.createElement(
4042
+ ), /* @__PURE__ */ React65.createElement(
3885
4043
  SliderInput,
3886
4044
  {
3887
4045
  label: t("signature.image-size", "Image size"),
3888
- iconLabel: /* @__PURE__ */ React63.createElement(AspectRatioOutlined, { sx: { color: "text.secondary" } }),
4046
+ iconLabel: /* @__PURE__ */ React65.createElement(AspectRatioOutlined, { sx: { color: "text.secondary" } }),
3889
4047
  units: "px",
3890
4048
  step: 4,
3891
4049
  min: 32,
@@ -3893,47 +4051,47 @@ function SignatureSidebarPanel({ data, setData }) {
3893
4051
  defaultValue: imageSize,
3894
4052
  onChange: (imageSize2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { imageSize: imageSize2 }) }))
3895
4053
  }
3896
- ), /* @__PURE__ */ React63.createElement(
4054
+ ), /* @__PURE__ */ React65.createElement(
3897
4055
  RadioGroupInput,
3898
4056
  {
3899
4057
  label: t("signature.image-shape", "Image shape"),
3900
4058
  defaultValue: imageShape,
3901
4059
  onChange: (imageShape2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { imageShape: imageShape2 }) }))
3902
4060
  },
3903
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "circle" }, t("signature.shape.circle", "Circle")),
3904
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "square" }, t("signature.shape.square", "Square")),
3905
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "rounded" }, t("signature.shape.rounded", "Rounded"))
3906
- ), /* @__PURE__ */ React63.createElement(
4061
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "circle" }, t("signature.shape.circle", "Circle")),
4062
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "square" }, t("signature.shape.square", "Square")),
4063
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "rounded" }, t("signature.shape.rounded", "Rounded"))
4064
+ ), /* @__PURE__ */ React65.createElement(
3907
4065
  RadioGroupInput,
3908
4066
  {
3909
4067
  label: t("signature.layout", "Layout"),
3910
4068
  defaultValue: layout,
3911
4069
  onChange: (layout2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { layout: layout2 }) }))
3912
4070
  },
3913
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "horizontal" }, t("signature.layout.horizontal", "Horizontal")),
3914
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "vertical" }, t("signature.layout.vertical", "Vertical"))
3915
- ), /* @__PURE__ */ React63.createElement(
4071
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "horizontal" }, t("signature.layout.horizontal", "Horizontal")),
4072
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "vertical" }, t("signature.layout.vertical", "Vertical"))
4073
+ ), /* @__PURE__ */ React65.createElement(
3916
4074
  ColorInput2,
3917
4075
  {
3918
4076
  label: t("signature.name-color", "Name color"),
3919
4077
  defaultValue: nameColor,
3920
4078
  onChange: (nameColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { nameColor: nameColor2 }) }))
3921
4079
  }
3922
- ), /* @__PURE__ */ React63.createElement(
4080
+ ), /* @__PURE__ */ React65.createElement(
3923
4081
  ColorInput2,
3924
4082
  {
3925
4083
  label: t("style.text-color", "Text color"),
3926
4084
  defaultValue: textColor,
3927
4085
  onChange: (textColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { textColor: textColor2 }) }))
3928
4086
  }
3929
- ), /* @__PURE__ */ React63.createElement(
4087
+ ), /* @__PURE__ */ React65.createElement(
3930
4088
  ColorInput2,
3931
4089
  {
3932
4090
  label: t("signature.link-color", "Link color"),
3933
4091
  defaultValue: linkColor,
3934
4092
  onChange: (linkColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { linkColor: linkColor2 }) }))
3935
4093
  }
3936
- ), /* @__PURE__ */ React63.createElement(
4094
+ ), /* @__PURE__ */ React65.createElement(
3937
4095
  MultiStylePropertyPanel,
3938
4096
  {
3939
4097
  names: ["backgroundColor", "fontFamily", "padding"],
@@ -3954,11 +4112,11 @@ function SpacerSidebarPanel({ data, setData }) {
3954
4112
  setErrors(res.error);
3955
4113
  }
3956
4114
  };
3957
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Spacer block" }, /* @__PURE__ */ React63.createElement(
4115
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Spacer block" }, /* @__PURE__ */ React65.createElement(
3958
4116
  SliderInput,
3959
4117
  {
3960
4118
  label: t("field.height", "Height"),
3961
- iconLabel: /* @__PURE__ */ React63.createElement(HeightOutlined, { sx: { color: "text.secondary" } }),
4119
+ iconLabel: /* @__PURE__ */ React65.createElement(HeightOutlined, { sx: { color: "text.secondary" } }),
3962
4120
  units: "px",
3963
4121
  step: 4,
3964
4122
  min: 4,
@@ -3980,7 +4138,7 @@ function TextSidebarPanel({ data, setData }) {
3980
4138
  setErrors(res.error);
3981
4139
  }
3982
4140
  };
3983
- return /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Text block" }, /* @__PURE__ */ React63.createElement(
4141
+ return /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Text block" }, /* @__PURE__ */ React65.createElement(
3984
4142
  TextInput,
3985
4143
  {
3986
4144
  label: t("field.content", "Content"),
@@ -3988,14 +4146,14 @@ function TextSidebarPanel({ data, setData }) {
3988
4146
  defaultValue: (_b = (_a = data.props) == null ? void 0 : _a.text) != null ? _b : "",
3989
4147
  onChange: (text) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { text }) }))
3990
4148
  }
3991
- ), /* @__PURE__ */ React63.createElement(
4149
+ ), /* @__PURE__ */ React65.createElement(
3992
4150
  BooleanInput,
3993
4151
  {
3994
4152
  label: t("field.markdown", "Markdown"),
3995
4153
  defaultValue: (_d = (_c = data.props) == null ? void 0 : _c.markdown) != null ? _d : false,
3996
4154
  onChange: (markdown) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { markdown }) }))
3997
4155
  }
3998
- ), /* @__PURE__ */ React63.createElement(
4156
+ ), /* @__PURE__ */ React65.createElement(
3999
4157
  MultiStylePropertyPanel,
4000
4158
  {
4001
4159
  names: [
@@ -4017,7 +4175,7 @@ function TextSidebarPanel({ data, setData }) {
4017
4175
 
4018
4176
  // src/app/inspector-drawer/configuration-panel/index.tsx
4019
4177
  function renderMessage(val) {
4020
- return /* @__PURE__ */ React63.createElement(Box, { sx: { m: 3, p: 1, border: "1px dashed", borderColor: "divider" } }, /* @__PURE__ */ React63.createElement(Typography, { color: "text.secondary" }, val));
4178
+ return /* @__PURE__ */ React65.createElement(Box, { sx: { m: 3, p: 1, border: "1px dashed", borderColor: "divider" } }, /* @__PURE__ */ React65.createElement(Typography, { color: "text.secondary" }, val));
4021
4179
  }
4022
4180
  function ConfigurationPanel() {
4023
4181
  const document2 = useDocument();
@@ -4033,55 +4191,57 @@ function ConfigurationPanel() {
4033
4191
  const { data, type } = block;
4034
4192
  switch (type) {
4035
4193
  case "Avatar":
4036
- return /* @__PURE__ */ React63.createElement(AvatarSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4194
+ return /* @__PURE__ */ React65.createElement(AvatarSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4037
4195
  case "Button":
4038
- return /* @__PURE__ */ React63.createElement(ButtonSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4196
+ return /* @__PURE__ */ React65.createElement(ButtonSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4039
4197
  case "ColumnsContainer":
4040
- return /* @__PURE__ */ React63.createElement(ColumnsContainerPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4198
+ return /* @__PURE__ */ React65.createElement(ColumnsContainerPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4041
4199
  case "Container":
4042
- return /* @__PURE__ */ React63.createElement(ContainerSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4200
+ return /* @__PURE__ */ React65.createElement(ContainerSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4043
4201
  case "Divider":
4044
- return /* @__PURE__ */ React63.createElement(DividerSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4202
+ return /* @__PURE__ */ React65.createElement(DividerSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4045
4203
  case "Heading":
4046
- return /* @__PURE__ */ React63.createElement(HeadingSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4204
+ return /* @__PURE__ */ React65.createElement(HeadingSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4047
4205
  case "Html":
4048
- return /* @__PURE__ */ React63.createElement(HtmlSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4206
+ return /* @__PURE__ */ React65.createElement(HtmlSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4049
4207
  case "Image":
4050
- return /* @__PURE__ */ React63.createElement(ImageSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4208
+ return /* @__PURE__ */ React65.createElement(ImageSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4051
4209
  case "EmailLayout":
4052
- return /* @__PURE__ */ React63.createElement(EmailLayoutSidebarFields, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4210
+ return /* @__PURE__ */ React65.createElement(EmailLayoutSidebarFields, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4211
+ case "Otp":
4212
+ return /* @__PURE__ */ React65.createElement(OtpSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4053
4213
  case "Spacer":
4054
- return /* @__PURE__ */ React63.createElement(SpacerSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4214
+ return /* @__PURE__ */ React65.createElement(SpacerSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4055
4215
  case "Signature":
4056
- return /* @__PURE__ */ React63.createElement(SignatureSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4216
+ return /* @__PURE__ */ React65.createElement(SignatureSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4057
4217
  case "Text":
4058
- return /* @__PURE__ */ React63.createElement(TextSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4218
+ return /* @__PURE__ */ React65.createElement(TextSidebarPanel, { key: selectedBlockId, data, setData: (data2) => setBlock({ type, data: data2 }) });
4059
4219
  default:
4060
- return /* @__PURE__ */ React63.createElement("pre", null, JSON.stringify(block, null, " "));
4220
+ return /* @__PURE__ */ React65.createElement("pre", null, JSON.stringify(block, null, " "));
4061
4221
  }
4062
4222
  }
4063
4223
  function StylesPanel() {
4064
4224
  const block = useDocument().root;
4065
4225
  if (!block) {
4066
- return /* @__PURE__ */ React63.createElement("p", null, "Block not found");
4226
+ return /* @__PURE__ */ React65.createElement("p", null, "Block not found");
4067
4227
  }
4068
4228
  const { data, type } = block;
4069
4229
  if (type !== "EmailLayout") {
4070
4230
  throw new Error('Expected "root" element to be of type EmailLayout');
4071
4231
  }
4072
- return /* @__PURE__ */ React63.createElement(EmailLayoutSidebarFields, { key: "root", data, setData: (data2) => setDocument({ root: { type, data: data2 } }) });
4232
+ return /* @__PURE__ */ React65.createElement(EmailLayoutSidebarFields, { key: "root", data, setData: (data2) => setDocument({ root: { type, data: data2 } }) });
4073
4233
  }
4074
4234
  function TemplateDownloadButton() {
4075
4235
  const doc = useDocument();
4076
4236
  const href = useMemo(() => {
4077
4237
  return `data:text/plain,${encodeURIComponent(JSON.stringify(doc, null, " "))}`;
4078
4238
  }, [doc]);
4079
- return /* @__PURE__ */ React63.createElement(
4239
+ return /* @__PURE__ */ React65.createElement(
4080
4240
  Button$1,
4081
4241
  {
4082
4242
  variant: "outlined",
4083
4243
  color: "primary",
4084
- startIcon: /* @__PURE__ */ React63.createElement(FileDownloadOutlined, null),
4244
+ startIcon: /* @__PURE__ */ React65.createElement(FileDownloadOutlined, null),
4085
4245
  href,
4086
4246
  download: "emailTemplate.json",
4087
4247
  fullWidth: true
@@ -4123,7 +4283,7 @@ function TemplatePanel({
4123
4283
  window.alert(t("settings.copied", "Template copied successfully!"));
4124
4284
  }
4125
4285
  };
4126
- const workspaceToggle = /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Editor appearance" }, /* @__PURE__ */ React63.createElement(Stack, { spacing: 1 }, /* @__PURE__ */ React63.createElement(Typography, { variant: "caption", sx: { color: "text.secondary" } }, t("settings.workspace-background", "Workspace background")), /* @__PURE__ */ React63.createElement(
4286
+ const workspaceToggle = /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Editor appearance" }, /* @__PURE__ */ React65.createElement(Stack, { spacing: 1 }, /* @__PURE__ */ React65.createElement(Typography, { variant: "caption", sx: { color: "text.secondary" } }, t("settings.workspace-background", "Workspace background")), /* @__PURE__ */ React65.createElement(
4127
4287
  ToggleButtonGroup,
4128
4288
  {
4129
4289
  value: workspaceBackground,
@@ -4131,13 +4291,13 @@ function TemplatePanel({
4131
4291
  size: "small",
4132
4292
  onChange: (_, v) => v && setWorkspaceBackground(v)
4133
4293
  },
4134
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "checkerboard", sx: { textTransform: "none", gap: 0.75 } }, /* @__PURE__ */ React63.createElement(GridOnOutlined, { fontSize: "small" }), t("settings.checkerboard", "Checkerboard")),
4135
- /* @__PURE__ */ React63.createElement(ToggleButton, { value: "solid", sx: { textTransform: "none", gap: 0.75 } }, /* @__PURE__ */ React63.createElement(SquareOutlined, { fontSize: "small" }), t("settings.solid", "Solid"))
4136
- ), /* @__PURE__ */ React63.createElement(Typography, { variant: "caption", sx: { color: "text.disabled" } }, t("settings.editor-only-hint", "Editor-only \u2014 never reaches the rendered email."))));
4294
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "checkerboard", sx: { textTransform: "none", gap: 0.75 } }, /* @__PURE__ */ React65.createElement(GridOnOutlined, { fontSize: "small" }), t("settings.checkerboard", "Checkerboard")),
4295
+ /* @__PURE__ */ React65.createElement(ToggleButton, { value: "solid", sx: { textTransform: "none", gap: 0.75 } }, /* @__PURE__ */ React65.createElement(SquareOutlined, { fontSize: "small" }), t("settings.solid", "Solid"))
4296
+ ), /* @__PURE__ */ React65.createElement(Typography, { variant: "caption", sx: { color: "text.disabled" } }, t("settings.editor-only-hint", "Editor-only \u2014 never reaches the rendered email."))));
4137
4297
  if (!currentTemplateId) {
4138
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Template" }, t("settings.no-template", "No template selected")), workspaceToggle);
4298
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Template" }, t("settings.no-template", "No template selected")), workspaceToggle);
4139
4299
  }
4140
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Details" }, /* @__PURE__ */ React63.createElement(
4300
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Details" }, /* @__PURE__ */ React65.createElement(
4141
4301
  DetailsEditor,
4142
4302
  {
4143
4303
  templateId: currentTemplateId,
@@ -4151,7 +4311,7 @@ function TemplatePanel({
4151
4311
  setCurrentTemplateTags(tags);
4152
4312
  })
4153
4313
  }
4154
- )), /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Template" }, /* @__PURE__ */ React63.createElement(Stack, { spacing: 2 }, !persistenceEnabled && /* @__PURE__ */ React63.createElement(
4314
+ )), /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Template" }, /* @__PURE__ */ React65.createElement(Stack, { spacing: 2 }, !persistenceEnabled && /* @__PURE__ */ React65.createElement(
4155
4315
  Typography,
4156
4316
  {
4157
4317
  variant: "body2",
@@ -4164,29 +4324,29 @@ function TemplatePanel({
4164
4324
  }
4165
4325
  },
4166
4326
  t("settings.save-disabled", "Save functionality is disabled. To enable saving, provide the necessary callback functions.")
4167
- ), persistenceEnabled && /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(
4327
+ ), persistenceEnabled && /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(
4168
4328
  Button$1,
4169
4329
  {
4170
4330
  variant: "outlined",
4171
4331
  color: "primary",
4172
- startIcon: /* @__PURE__ */ React63.createElement(ContentCopyOutlined, null),
4332
+ startIcon: /* @__PURE__ */ React65.createElement(ContentCopyOutlined, null),
4173
4333
  onClick: handleCopyToSamples,
4174
4334
  fullWidth: true,
4175
4335
  disabled: !copyTemplate
4176
4336
  },
4177
4337
  t("settings.save-as-sample", "Save as Sample Template")
4178
- ), /* @__PURE__ */ React63.createElement(
4338
+ ), /* @__PURE__ */ React65.createElement(
4179
4339
  Button$1,
4180
4340
  {
4181
4341
  variant: "outlined",
4182
4342
  color: "error",
4183
- startIcon: /* @__PURE__ */ React63.createElement(DeleteOutlined, null),
4343
+ startIcon: /* @__PURE__ */ React65.createElement(DeleteOutlined, null),
4184
4344
  onClick: handleDelete,
4185
4345
  fullWidth: true,
4186
4346
  disabled: !deleteTemplate
4187
4347
  },
4188
4348
  t("settings.delete", "Delete Template")
4189
- )))), persistenceEnabled && /* @__PURE__ */ React63.createElement(BaseSidebarPanel, { title: "Export" }, /* @__PURE__ */ React63.createElement(Stack, { spacing: 2 }, /* @__PURE__ */ React63.createElement(TemplateDownloadButton, null))), workspaceToggle);
4349
+ )))), persistenceEnabled && /* @__PURE__ */ React65.createElement(BaseSidebarPanel, { title: "Export" }, /* @__PURE__ */ React65.createElement(Stack, { spacing: 2 }, /* @__PURE__ */ React65.createElement(TemplateDownloadButton, null))), workspaceToggle);
4190
4350
  }
4191
4351
  function DetailsEditor({ templateId, currentName, currentTags, canEdit, onSave }) {
4192
4352
  const [name, setName] = useState(currentName);
@@ -4223,7 +4383,7 @@ function DetailsEditor({ templateId, currentName, currentTags, canEdit, onSave }
4223
4383
  setSaving(false);
4224
4384
  }
4225
4385
  });
4226
- return /* @__PURE__ */ React63.createElement(Stack, { spacing: 1.5 }, /* @__PURE__ */ React63.createElement(
4386
+ return /* @__PURE__ */ React65.createElement(Stack, { spacing: 1.5 }, /* @__PURE__ */ React65.createElement(
4227
4387
  TextField,
4228
4388
  {
4229
4389
  size: "small",
@@ -4233,7 +4393,7 @@ function DetailsEditor({ templateId, currentName, currentTags, canEdit, onSave }
4233
4393
  disabled: !canEdit || saving,
4234
4394
  fullWidth: true
4235
4395
  }
4236
- ), /* @__PURE__ */ React63.createElement(Box, null, /* @__PURE__ */ React63.createElement(Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mb: 0.5 } }, t("rename.tags", "Tags")), tags.length > 0 ? /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 0.5, sx: { flexWrap: "wrap", gap: 0.5, mb: 1 } }, tags.map((tag) => /* @__PURE__ */ React63.createElement(
4396
+ ), /* @__PURE__ */ React65.createElement(Box, null, /* @__PURE__ */ React65.createElement(Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mb: 0.5 } }, t("rename.tags", "Tags")), tags.length > 0 ? /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 0.5, sx: { flexWrap: "wrap", gap: 0.5, mb: 1 } }, tags.map((tag) => /* @__PURE__ */ React65.createElement(
4237
4397
  Chip,
4238
4398
  {
4239
4399
  key: tag,
@@ -4241,7 +4401,7 @@ function DetailsEditor({ templateId, currentName, currentTags, canEdit, onSave }
4241
4401
  size: "small",
4242
4402
  onDelete: canEdit && !saving ? () => removeTag(tag) : void 0
4243
4403
  }
4244
- ))) : /* @__PURE__ */ React63.createElement(Typography, { variant: "caption", sx: { color: "text.disabled", display: "block", mb: 1 } }, t("rename.no-tags", "No tags yet.")), /* @__PURE__ */ React63.createElement(
4404
+ ))) : /* @__PURE__ */ React65.createElement(Typography, { variant: "caption", sx: { color: "text.disabled", display: "block", mb: 1 } }, t("rename.no-tags", "No tags yet.")), /* @__PURE__ */ React65.createElement(
4245
4405
  TextField,
4246
4406
  {
4247
4407
  size: "small",
@@ -4260,20 +4420,20 @@ function DetailsEditor({ templateId, currentName, currentTags, canEdit, onSave }
4260
4420
  }
4261
4421
  },
4262
4422
  InputProps: {
4263
- endAdornment: /* @__PURE__ */ React63.createElement(InputAdornment, { position: "end" }, /* @__PURE__ */ React63.createElement(
4423
+ endAdornment: /* @__PURE__ */ React65.createElement(InputAdornment, { position: "end" }, /* @__PURE__ */ React65.createElement(
4264
4424
  Button$1,
4265
4425
  {
4266
4426
  size: "small",
4267
4427
  onClick: addTag,
4268
4428
  disabled: !canEdit || saving || !tagInput.trim(),
4269
- startIcon: /* @__PURE__ */ React63.createElement(AddOutlined, { fontSize: "small" }),
4429
+ startIcon: /* @__PURE__ */ React65.createElement(AddOutlined, { fontSize: "small" }),
4270
4430
  sx: { textTransform: "none" }
4271
4431
  },
4272
4432
  t("common.add", "Add")
4273
4433
  ))
4274
4434
  }
4275
4435
  }
4276
- )), /* @__PURE__ */ React63.createElement(Tooltip, { title: canEdit ? "" : t("settings.no-rename-cb", "Wire a renameTemplate callback to enable editing from here"), placement: "top" }, /* @__PURE__ */ React63.createElement("span", null, /* @__PURE__ */ React63.createElement(
4436
+ )), /* @__PURE__ */ React65.createElement(Tooltip, { title: canEdit ? "" : t("settings.no-rename-cb", "Wire a renameTemplate callback to enable editing from here"), placement: "top" }, /* @__PURE__ */ React65.createElement("span", null, /* @__PURE__ */ React65.createElement(
4277
4437
  Button$1,
4278
4438
  {
4279
4439
  variant: "contained",
@@ -4281,7 +4441,7 @@ function DetailsEditor({ templateId, currentName, currentTags, canEdit, onSave }
4281
4441
  fullWidth: true,
4282
4442
  onClick: handleSave,
4283
4443
  disabled: !canEdit || saving || !dirty || !name.trim(),
4284
- startIcon: justSaved ? /* @__PURE__ */ React63.createElement(CheckOutlined, { fontSize: "small" }) : null
4444
+ startIcon: justSaved ? /* @__PURE__ */ React65.createElement(CheckOutlined, { fontSize: "small" }) : null
4285
4445
  },
4286
4446
  saving ? t("common.saving", "Saving\u2026") : justSaved ? t("settings.saved", "Saved") : t("settings.save-details", "Save details")
4287
4447
  ))));
@@ -4458,7 +4618,7 @@ function VariablesPanel() {
4458
4618
  const lastFocused = useLastFocusedEditable();
4459
4619
  const root = document2.root;
4460
4620
  if (!root || root.type !== "EmailLayout") {
4461
- return /* @__PURE__ */ React63.createElement(Box, { p: 2 }, /* @__PURE__ */ React63.createElement(Alert, { severity: "info" }, t("variables.open-template", "Open a template to manage variables.")));
4621
+ return /* @__PURE__ */ React65.createElement(Box, { p: 2 }, /* @__PURE__ */ React65.createElement(Alert, { severity: "info" }, t("variables.open-template", "Open a template to manage variables.")));
4462
4622
  }
4463
4623
  const data = root.data;
4464
4624
  const variables = ((_a = data.variables) != null ? _a : []).map((v) => {
@@ -4553,10 +4713,10 @@ function VariablesPanel() {
4553
4713
  } catch (e) {
4554
4714
  }
4555
4715
  });
4556
- return /* @__PURE__ */ React63.createElement(Box, { p: 2 }, /* @__PURE__ */ React63.createElement(Stack, { direction: "row", alignItems: "center", justifyContent: "space-between", sx: { mb: 1 } }, /* @__PURE__ */ React63.createElement(Typography, { variant: "subtitle1", sx: { fontWeight: 600 } }, t("variables.title", "Variables")), /* @__PURE__ */ React63.createElement(Tooltip, { title: t("variables.add", "Add variable") }, /* @__PURE__ */ React63.createElement(IconButton, { size: "small", onClick: add, "aria-label": t("variables.add", "Add variable") }, /* @__PURE__ */ React63.createElement(AddOutlined, { fontSize: "small" })))), /* @__PURE__ */ React63.createElement(Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mb: 2 } }, t(
4716
+ return /* @__PURE__ */ React65.createElement(Box, { p: 2 }, /* @__PURE__ */ React65.createElement(Stack, { direction: "row", alignItems: "center", justifyContent: "space-between", sx: { mb: 1 } }, /* @__PURE__ */ React65.createElement(Typography, { variant: "subtitle1", sx: { fontWeight: 600 } }, t("variables.title", "Variables")), /* @__PURE__ */ React65.createElement(Tooltip, { title: t("variables.add", "Add variable") }, /* @__PURE__ */ React65.createElement(IconButton, { size: "small", onClick: add, "aria-label": t("variables.add", "Add variable") }, /* @__PURE__ */ React65.createElement(AddOutlined, { fontSize: "small" })))), /* @__PURE__ */ React65.createElement(Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mb: 2 } }, t(
4557
4717
  "variables.intro",
4558
4718
  "Declared variables travel with the template. Reference them in subject and body as {{name}}. In Preview mode, tokens render with the sample values below."
4559
- )), undeclared.length > 0 && /* @__PURE__ */ React63.createElement(Alert, { severity: "warning", sx: { mb: 2 } }, /* @__PURE__ */ React63.createElement(AlertTitle, { sx: { fontSize: 13 } }, t("variables.undeclared", "Undeclared in body")), /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 0.5, useFlexGap: true, flexWrap: "wrap" }, undeclared.map((name) => /* @__PURE__ */ React63.createElement(
4719
+ )), undeclared.length > 0 && /* @__PURE__ */ React65.createElement(Alert, { severity: "warning", sx: { mb: 2 } }, /* @__PURE__ */ React65.createElement(AlertTitle, { sx: { fontSize: 13 } }, t("variables.undeclared", "Undeclared in body")), /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 0.5, useFlexGap: true, flexWrap: "wrap" }, undeclared.map((name) => /* @__PURE__ */ React65.createElement(
4560
4720
  Chip,
4561
4721
  {
4562
4722
  key: name,
@@ -4564,12 +4724,12 @@ function VariablesPanel() {
4564
4724
  label: name,
4565
4725
  onClick: () => addFromToken(name),
4566
4726
  onDelete: () => addFromToken(name),
4567
- deleteIcon: /* @__PURE__ */ React63.createElement(AddOutlined, null),
4727
+ deleteIcon: /* @__PURE__ */ React65.createElement(AddOutlined, null),
4568
4728
  sx: { fontFamily: "monospace" }
4569
4729
  }
4570
- ))), /* @__PURE__ */ React63.createElement(Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mt: 0.5 } }, t("variables.click-to-declare", "Click a token to declare it."))), variables.length === 0 ? /* @__PURE__ */ React63.createElement(Typography, { variant: "body2", sx: { color: "text.secondary" } }, t("variables.none", "No variables declared. Click + to add one.")) : /* @__PURE__ */ React63.createElement(Stack, { spacing: 2 }, variables.map((v, i) => {
4730
+ ))), /* @__PURE__ */ React65.createElement(Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mt: 0.5 } }, t("variables.click-to-declare", "Click a token to declare it."))), variables.length === 0 ? /* @__PURE__ */ React65.createElement(Typography, { variant: "body2", sx: { color: "text.secondary" } }, t("variables.none", "No variables declared. Click + to add one.")) : /* @__PURE__ */ React65.createElement(Stack, { spacing: 2 }, variables.map((v, i) => {
4571
4731
  var _a2;
4572
- return /* @__PURE__ */ React63.createElement(
4732
+ return /* @__PURE__ */ React65.createElement(
4573
4733
  VariableRow,
4574
4734
  {
4575
4735
  key: i,
@@ -4620,7 +4780,7 @@ function VariableRow({
4620
4780
  onCommitRename(draftName.trim());
4621
4781
  }
4622
4782
  };
4623
- return /* @__PURE__ */ React63.createElement(Stack, { spacing: 0.75, sx: { pb: 1, borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 1, alignItems: "flex-start" }, /* @__PURE__ */ React63.createElement(
4783
+ return /* @__PURE__ */ React65.createElement(Stack, { spacing: 0.75, sx: { pb: 1, borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 1, alignItems: "flex-start" }, /* @__PURE__ */ React65.createElement(
4624
4784
  TextField,
4625
4785
  {
4626
4786
  label: t("rename.name-label", "Name"),
@@ -4645,7 +4805,7 @@ function VariableRow({
4645
4805
  error: Boolean(nameError),
4646
4806
  helperText: nameError != null ? nameError : " "
4647
4807
  }
4648
- ), /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 0.25, sx: { mt: 0.5 } }, /* @__PURE__ */ React63.createElement(Tooltip, { title: t("variables.copy-token", "Copy {{name}} token") }, /* @__PURE__ */ React63.createElement("span", null, /* @__PURE__ */ React63.createElement(
4808
+ ), /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 0.25, sx: { mt: 0.5 } }, /* @__PURE__ */ React65.createElement(Tooltip, { title: t("variables.copy-token", "Copy {{name}} token") }, /* @__PURE__ */ React65.createElement("span", null, /* @__PURE__ */ React65.createElement(
4649
4809
  IconButton,
4650
4810
  {
4651
4811
  size: "small",
@@ -4653,8 +4813,8 @@ function VariableRow({
4653
4813
  disabled: !hasName,
4654
4814
  "aria-label": t("variables.copy-token", "Copy {{name}} token")
4655
4815
  },
4656
- /* @__PURE__ */ React63.createElement(ContentCopyOutlined, { fontSize: "small" })
4657
- ))), /* @__PURE__ */ React63.createElement(Tooltip, { title: canInsert ? t("variables.insert-at-cursor", "Insert at cursor") : t("variables.focus-first", "Focus a text field first") }, /* @__PURE__ */ React63.createElement("span", null, /* @__PURE__ */ React63.createElement(
4816
+ /* @__PURE__ */ React65.createElement(ContentCopyOutlined, { fontSize: "small" })
4817
+ ))), /* @__PURE__ */ React65.createElement(Tooltip, { title: canInsert ? t("variables.insert-at-cursor", "Insert at cursor") : t("variables.focus-first", "Focus a text field first") }, /* @__PURE__ */ React65.createElement("span", null, /* @__PURE__ */ React65.createElement(
4658
4818
  IconButton,
4659
4819
  {
4660
4820
  size: "small",
@@ -4662,16 +4822,16 @@ function VariableRow({
4662
4822
  disabled: !hasName || !canInsert,
4663
4823
  "aria-label": t("variables.insert-at-cursor", "Insert at cursor")
4664
4824
  },
4665
- /* @__PURE__ */ React63.createElement(InputOutlined, { fontSize: "small" })
4666
- ))), /* @__PURE__ */ React63.createElement(Tooltip, { title: t("variables.remove", "Remove") }, /* @__PURE__ */ React63.createElement(
4825
+ /* @__PURE__ */ React65.createElement(InputOutlined, { fontSize: "small" })
4826
+ ))), /* @__PURE__ */ React65.createElement(Tooltip, { title: t("variables.remove", "Remove") }, /* @__PURE__ */ React65.createElement(
4667
4827
  IconButton,
4668
4828
  {
4669
4829
  size: "small",
4670
4830
  onClick: onRemove,
4671
4831
  "aria-label": t("variables.remove", "Remove")
4672
4832
  },
4673
- /* @__PURE__ */ React63.createElement(DeleteOutline, { fontSize: "small" })
4674
- )))), /* @__PURE__ */ React63.createElement(
4833
+ /* @__PURE__ */ React65.createElement(DeleteOutline, { fontSize: "small" })
4834
+ )))), /* @__PURE__ */ React65.createElement(
4675
4835
  TextField,
4676
4836
  {
4677
4837
  label: t("variables.description", "Description"),
@@ -4681,7 +4841,7 @@ function VariableRow({
4681
4841
  onChange: (e) => onChangeDescription(e.target.value),
4682
4842
  placeholder: t("variables.optional", "Optional")
4683
4843
  }
4684
- ), /* @__PURE__ */ React63.createElement(
4844
+ ), /* @__PURE__ */ React65.createElement(
4685
4845
  TextField,
4686
4846
  {
4687
4847
  label: t("variables.sample-value", "Sample value"),
@@ -4691,7 +4851,7 @@ function VariableRow({
4691
4851
  onChange: (e) => onChangeSampleValue(e.target.value),
4692
4852
  placeholder: t("variables.sample-hint", "Shown in Preview mode"),
4693
4853
  InputProps: {
4694
- startAdornment: /* @__PURE__ */ React63.createElement(
4854
+ startAdornment: /* @__PURE__ */ React65.createElement(
4695
4855
  DataObjectOutlined,
4696
4856
  {
4697
4857
  fontSize: "small",
@@ -4700,7 +4860,7 @@ function VariableRow({
4700
4860
  )
4701
4861
  }
4702
4862
  }
4703
- ), /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 0.5, sx: { pt: 0.25 } }, hasName && (unused ? /* @__PURE__ */ React63.createElement(Chip, { size: "small", color: "warning", variant: "outlined", label: t("variables.unused", "Unused in body") }) : /* @__PURE__ */ React63.createElement(
4863
+ ), /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 0.5, sx: { pt: 0.25 } }, hasName && (unused ? /* @__PURE__ */ React65.createElement(Chip, { size: "small", color: "warning", variant: "outlined", label: t("variables.unused", "Unused in body") }) : /* @__PURE__ */ React65.createElement(
4704
4864
  Chip,
4705
4865
  {
4706
4866
  size: "small",
@@ -4725,13 +4885,13 @@ function InspectorDrawer({
4725
4885
  const renderCurrentSidebarPanel = () => {
4726
4886
  switch (selectedSidebarTab) {
4727
4887
  case "block-configuration":
4728
- return /* @__PURE__ */ React63.createElement(ConfigurationPanel, null);
4888
+ return /* @__PURE__ */ React65.createElement(ConfigurationPanel, null);
4729
4889
  case "styles":
4730
- return /* @__PURE__ */ React63.createElement(StylesPanel, null);
4890
+ return /* @__PURE__ */ React65.createElement(StylesPanel, null);
4731
4891
  case "variables":
4732
- return /* @__PURE__ */ React63.createElement(VariablesPanel, null);
4892
+ return /* @__PURE__ */ React65.createElement(VariablesPanel, null);
4733
4893
  case "template-settings":
4734
- return /* @__PURE__ */ React63.createElement(
4894
+ return /* @__PURE__ */ React65.createElement(
4735
4895
  TemplatePanel,
4736
4896
  {
4737
4897
  deleteTemplate,
@@ -4741,7 +4901,7 @@ function InspectorDrawer({
4741
4901
  );
4742
4902
  }
4743
4903
  };
4744
- return /* @__PURE__ */ React63.createElement(
4904
+ return /* @__PURE__ */ React65.createElement(
4745
4905
  Drawer,
4746
4906
  {
4747
4907
  variant: "persistent",
@@ -4763,7 +4923,7 @@ function InspectorDrawer({
4763
4923
  width: inspectorDrawerOpen ? INSPECTOR_DRAWER_WIDTH : 0
4764
4924
  }
4765
4925
  },
4766
- /* @__PURE__ */ React63.createElement(Box, { sx: { width: INSPECTOR_DRAWER_WIDTH, height: 49, borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React63.createElement(Box, { px: 1 }, /* @__PURE__ */ React63.createElement(
4926
+ /* @__PURE__ */ React65.createElement(Box, { sx: { width: INSPECTOR_DRAWER_WIDTH, height: 49, borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React65.createElement(Box, { px: 1 }, /* @__PURE__ */ React65.createElement(
4767
4927
  Tabs,
4768
4928
  {
4769
4929
  value: selectedSidebarTab,
@@ -4771,12 +4931,12 @@ function InspectorDrawer({
4771
4931
  variant: "fullWidth",
4772
4932
  sx: { "& .MuiTab-root": { minWidth: 0, px: 1, fontSize: 13 } }
4773
4933
  },
4774
- /* @__PURE__ */ React63.createElement(Tab, { value: "styles", label: t("inspector.tab.styles", "Styles") }),
4775
- /* @__PURE__ */ React63.createElement(Tab, { value: "block-configuration", label: t("inspector.tab.inspect", "Inspect") }),
4776
- /* @__PURE__ */ React63.createElement(Tab, { value: "variables", label: t("inspector.tab.variables", "Variables") }),
4777
- /* @__PURE__ */ React63.createElement(Tab, { value: "template-settings", label: t("inspector.tab.settings", "Settings") })
4934
+ /* @__PURE__ */ React65.createElement(Tab, { value: "styles", label: t("inspector.tab.styles", "Styles") }),
4935
+ /* @__PURE__ */ React65.createElement(Tab, { value: "block-configuration", label: t("inspector.tab.inspect", "Inspect") }),
4936
+ /* @__PURE__ */ React65.createElement(Tab, { value: "variables", label: t("inspector.tab.variables", "Variables") }),
4937
+ /* @__PURE__ */ React65.createElement(Tab, { value: "template-settings", label: t("inspector.tab.settings", "Settings") })
4778
4938
  ))),
4779
- /* @__PURE__ */ React63.createElement(Box, { sx: { width: INSPECTOR_DRAWER_WIDTH, height: "calc(100% - 49px)", overflow: "auto" } }, renderCurrentSidebarPanel())
4939
+ /* @__PURE__ */ React65.createElement(Box, { sx: { width: INSPECTOR_DRAWER_WIDTH, height: "calc(100% - 49px)", overflow: "auto" } }, renderCurrentSidebarPanel())
4780
4940
  );
4781
4941
  }
4782
4942
  var SnackbarContext = createContext(null);
@@ -4797,7 +4957,7 @@ function SnackbarProvider({ children }) {
4797
4957
  const handleClose = () => {
4798
4958
  setMessage(null);
4799
4959
  };
4800
- return /* @__PURE__ */ React63.createElement(SnackbarContext.Provider, { value: { showMessage } }, children, /* @__PURE__ */ React63.createElement(
4960
+ return /* @__PURE__ */ React65.createElement(SnackbarContext.Provider, { value: { showMessage } }, children, /* @__PURE__ */ React65.createElement(
4801
4961
  Snackbar,
4802
4962
  {
4803
4963
  anchorOrigin: { vertical: "top", horizontal: "center" },
@@ -4874,7 +5034,7 @@ function TemplateRow({
4874
5034
  const hasActions = Boolean(
4875
5035
  onDuplicate || onRename || onDelete || onPromote || onDemote || onDuplicateAsTemplate
4876
5036
  );
4877
- return /* @__PURE__ */ React63.createElement(
5037
+ return /* @__PURE__ */ React65.createElement(
4878
5038
  Box,
4879
5039
  {
4880
5040
  role: "button",
@@ -4900,7 +5060,7 @@ function TemplateRow({
4900
5060
  "&:focus-visible": { outline: "2px solid", outlineColor: "primary.main" }
4901
5061
  }
4902
5062
  },
4903
- /* @__PURE__ */ React63.createElement(Stack, { direction: "row", alignItems: "flex-start", spacing: 1 }, /* @__PURE__ */ React63.createElement(Box, { sx: { flexGrow: 1, minWidth: 0, pr: hasActions ? 3 : 0 } }, /* @__PURE__ */ React63.createElement(Stack, { direction: "row", alignItems: "baseline", spacing: 1, sx: { minWidth: 0 } }, /* @__PURE__ */ React63.createElement(
5063
+ /* @__PURE__ */ React65.createElement(Stack, { direction: "row", alignItems: "flex-start", spacing: 1 }, /* @__PURE__ */ React65.createElement(Box, { sx: { flexGrow: 1, minWidth: 0, pr: hasActions ? 3 : 0 } }, /* @__PURE__ */ React65.createElement(Stack, { direction: "row", alignItems: "baseline", spacing: 1, sx: { minWidth: 0 } }, /* @__PURE__ */ React65.createElement(
4904
5064
  Typography,
4905
5065
  {
4906
5066
  variant: "body2",
@@ -4914,14 +5074,14 @@ function TemplateRow({
4914
5074
  title: template.slug
4915
5075
  },
4916
5076
  template.slug
4917
- ), updated && !hasActions && /* @__PURE__ */ React63.createElement(
5077
+ ), updated && !hasActions && /* @__PURE__ */ React65.createElement(
4918
5078
  Typography,
4919
5079
  {
4920
5080
  variant: "caption",
4921
5081
  sx: { color: "text.secondary", flexShrink: 0, fontSize: "0.7rem" }
4922
5082
  },
4923
5083
  updated
4924
- )), template.description && /* @__PURE__ */ React63.createElement(
5084
+ )), template.description && /* @__PURE__ */ React65.createElement(
4925
5085
  Typography,
4926
5086
  {
4927
5087
  variant: "caption",
@@ -4935,7 +5095,7 @@ function TemplateRow({
4935
5095
  }
4936
5096
  },
4937
5097
  template.description
4938
- ), template.tags && template.tags.length > 0 && /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 0.5, sx: { mt: 0.5, flexWrap: "wrap", gap: 0.5 } }, template.tags.map((tag) => /* @__PURE__ */ React63.createElement(
5098
+ ), template.tags && template.tags.length > 0 && /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 0.5, sx: { mt: 0.5, flexWrap: "wrap", gap: 0.5 } }, template.tags.map((tag) => /* @__PURE__ */ React65.createElement(
4939
5099
  Chip,
4940
5100
  {
4941
5101
  key: tag,
@@ -4944,7 +5104,7 @@ function TemplateRow({
4944
5104
  sx: { height: 18, fontSize: "0.65rem", "& .MuiChip-label": { px: 0.75 } }
4945
5105
  }
4946
5106
  ))))),
4947
- hasActions && /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(Tooltip, { title: t("row.more", "More") }, /* @__PURE__ */ React63.createElement(
5107
+ hasActions && /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(Tooltip, { title: t("row.more", "More") }, /* @__PURE__ */ React65.createElement(
4948
5108
  IconButton,
4949
5109
  {
4950
5110
  size: "small",
@@ -4960,8 +5120,8 @@ function TemplateRow({
4960
5120
  transition: "opacity 120ms"
4961
5121
  }
4962
5122
  },
4963
- /* @__PURE__ */ React63.createElement(MoreVertOutlined, { fontSize: "small" })
4964
- )), /* @__PURE__ */ React63.createElement(
5123
+ /* @__PURE__ */ React65.createElement(MoreVertOutlined, { fontSize: "small" })
5124
+ )), /* @__PURE__ */ React65.createElement(
4965
5125
  Menu,
4966
5126
  {
4967
5127
  anchorEl: menuAnchor,
@@ -4972,14 +5132,14 @@ function TemplateRow({
4972
5132
  transformOrigin: { vertical: "top", horizontal: "right" },
4973
5133
  slotProps: { paper: { sx: { minWidth: 200 } } }
4974
5134
  },
4975
- onRename && /* @__PURE__ */ React63.createElement(MenuItem, { onClick: runAction(onRename) }, /* @__PURE__ */ React63.createElement(ListItemIcon, null, /* @__PURE__ */ React63.createElement(DriveFileRenameOutlineOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(ListItemText, null, t("row.edit-details", "Edit name & tags\u2026"))),
4976
- onDuplicate && /* @__PURE__ */ React63.createElement(MenuItem, { onClick: runAction(onDuplicate) }, /* @__PURE__ */ React63.createElement(ListItemIcon, null, /* @__PURE__ */ React63.createElement(ContentCopyOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(ListItemText, null, t("row.duplicate", "Duplicate"))),
4977
- onDuplicateAsTemplate && /* @__PURE__ */ React63.createElement(MenuItem, { onClick: runAction(onDuplicateAsTemplate) }, /* @__PURE__ */ React63.createElement(ListItemIcon, null, /* @__PURE__ */ React63.createElement(LibraryAddOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(ListItemText, null, t("row.duplicate-as-template", "Duplicate as template"))),
4978
- onPromote && /* @__PURE__ */ React63.createElement(MenuItem, { onClick: runAction(onPromote) }, /* @__PURE__ */ React63.createElement(ListItemIcon, null, /* @__PURE__ */ React63.createElement(FileUploadOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(ListItemText, null, t("row.promote", "Promote to sample"))),
4979
- onDemote && /* @__PURE__ */ React63.createElement(MenuItem, { onClick: runAction(onDemote) }, /* @__PURE__ */ React63.createElement(ListItemIcon, null, /* @__PURE__ */ React63.createElement(FileDownloadOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(ListItemText, null, t("row.demote", "Demote to template"))),
5135
+ onRename && /* @__PURE__ */ React65.createElement(MenuItem, { onClick: runAction(onRename) }, /* @__PURE__ */ React65.createElement(ListItemIcon, null, /* @__PURE__ */ React65.createElement(DriveFileRenameOutlineOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(ListItemText, null, t("row.edit-details", "Edit name & tags\u2026"))),
5136
+ onDuplicate && /* @__PURE__ */ React65.createElement(MenuItem, { onClick: runAction(onDuplicate) }, /* @__PURE__ */ React65.createElement(ListItemIcon, null, /* @__PURE__ */ React65.createElement(ContentCopyOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(ListItemText, null, t("row.duplicate", "Duplicate"))),
5137
+ onDuplicateAsTemplate && /* @__PURE__ */ React65.createElement(MenuItem, { onClick: runAction(onDuplicateAsTemplate) }, /* @__PURE__ */ React65.createElement(ListItemIcon, null, /* @__PURE__ */ React65.createElement(LibraryAddOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(ListItemText, null, t("row.duplicate-as-template", "Duplicate as template"))),
5138
+ onPromote && /* @__PURE__ */ React65.createElement(MenuItem, { onClick: runAction(onPromote) }, /* @__PURE__ */ React65.createElement(ListItemIcon, null, /* @__PURE__ */ React65.createElement(FileUploadOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(ListItemText, null, t("row.promote", "Promote to sample"))),
5139
+ onDemote && /* @__PURE__ */ React65.createElement(MenuItem, { onClick: runAction(onDemote) }, /* @__PURE__ */ React65.createElement(ListItemIcon, null, /* @__PURE__ */ React65.createElement(FileDownloadOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(ListItemText, null, t("row.demote", "Demote to template"))),
4980
5140
  onDelete && [
4981
- /* @__PURE__ */ React63.createElement(Divider$1, { key: "divider" }),
4982
- /* @__PURE__ */ React63.createElement(MenuItem, { key: "delete", onClick: runAction(onDelete), sx: { color: "error.main" } }, /* @__PURE__ */ React63.createElement(ListItemIcon, { sx: { color: "error.main" } }, /* @__PURE__ */ React63.createElement(DeleteOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(ListItemText, null, t("tune.delete", "Delete")))
5141
+ /* @__PURE__ */ React65.createElement(Divider$1, { key: "divider" }),
5142
+ /* @__PURE__ */ React65.createElement(MenuItem, { key: "delete", onClick: runAction(onDelete), sx: { color: "error.main" } }, /* @__PURE__ */ React65.createElement(ListItemIcon, { sx: { color: "error.main" } }, /* @__PURE__ */ React65.createElement(DeleteOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(ListItemText, null, t("tune.delete", "Delete")))
4983
5143
  ]
4984
5144
  ))
4985
5145
  );
@@ -5094,31 +5254,31 @@ var PREVIEW_MAX = 36;
5094
5254
  function iconForType(type) {
5095
5255
  switch (type) {
5096
5256
  case "EmailLayout":
5097
- return /* @__PURE__ */ React63.createElement(DashboardOutlined, { fontSize: "small" });
5257
+ return /* @__PURE__ */ React65.createElement(DashboardOutlined, { fontSize: "small" });
5098
5258
  case "Heading":
5099
- return /* @__PURE__ */ React63.createElement(HMobiledataOutlined, { fontSize: "small" });
5259
+ return /* @__PURE__ */ React65.createElement(HMobiledataOutlined, { fontSize: "small" });
5100
5260
  case "Text":
5101
- return /* @__PURE__ */ React63.createElement(NotesOutlined, { fontSize: "small" });
5261
+ return /* @__PURE__ */ React65.createElement(NotesOutlined, { fontSize: "small" });
5102
5262
  case "Button":
5103
- return /* @__PURE__ */ React63.createElement(SmartButtonOutlined, { fontSize: "small" });
5263
+ return /* @__PURE__ */ React65.createElement(SmartButtonOutlined, { fontSize: "small" });
5104
5264
  case "Image":
5105
- return /* @__PURE__ */ React63.createElement(ImageOutlined, { fontSize: "small" });
5265
+ return /* @__PURE__ */ React65.createElement(ImageOutlined, { fontSize: "small" });
5106
5266
  case "Avatar":
5107
- return /* @__PURE__ */ React63.createElement(AccountCircleOutlined, { fontSize: "small" });
5267
+ return /* @__PURE__ */ React65.createElement(AccountCircleOutlined, { fontSize: "small" });
5108
5268
  case "Signature":
5109
- return /* @__PURE__ */ React63.createElement(ContactMailOutlined, { fontSize: "small" });
5269
+ return /* @__PURE__ */ React65.createElement(ContactMailOutlined, { fontSize: "small" });
5110
5270
  case "Divider":
5111
- return /* @__PURE__ */ React63.createElement(HorizontalRuleOutlined, { fontSize: "small" });
5271
+ return /* @__PURE__ */ React65.createElement(HorizontalRuleOutlined, { fontSize: "small" });
5112
5272
  case "Spacer":
5113
- return /* @__PURE__ */ React63.createElement(Crop32Outlined, { fontSize: "small" });
5273
+ return /* @__PURE__ */ React65.createElement(Crop32Outlined, { fontSize: "small" });
5114
5274
  case "Html":
5115
- return /* @__PURE__ */ React63.createElement(HtmlOutlined, { fontSize: "small" });
5275
+ return /* @__PURE__ */ React65.createElement(HtmlOutlined, { fontSize: "small" });
5116
5276
  case "Container":
5117
- return /* @__PURE__ */ React63.createElement(LibraryAddOutlined, { fontSize: "small" });
5277
+ return /* @__PURE__ */ React65.createElement(LibraryAddOutlined, { fontSize: "small" });
5118
5278
  case "ColumnsContainer":
5119
- return /* @__PURE__ */ React63.createElement(ViewColumnOutlined, { fontSize: "small" });
5279
+ return /* @__PURE__ */ React65.createElement(ViewColumnOutlined, { fontSize: "small" });
5120
5280
  default:
5121
- return /* @__PURE__ */ React63.createElement(BusinessOutlined, { fontSize: "small" });
5281
+ return /* @__PURE__ */ React65.createElement(BusinessOutlined, { fontSize: "small" });
5122
5282
  }
5123
5283
  }
5124
5284
  function previewText(text) {
@@ -5196,7 +5356,7 @@ function buildNode(id, doc, ctx) {
5196
5356
  id: `${id}::col${colIdx}`,
5197
5357
  label: `Column ${colIdx + 1}`,
5198
5358
  preview: colChildren.length === 1 ? "1 child" : `${colChildren.length} children`,
5199
- icon: /* @__PURE__ */ React63.createElement(ViewColumnSharp, { fontSize: "small", sx: { opacity: 0.6 } }),
5359
+ icon: /* @__PURE__ */ React65.createElement(ViewColumnSharp, { fontSize: "small", sx: { opacity: 0.6 } }),
5200
5360
  children: colChildren,
5201
5361
  containerChildrenRef: parentForCol
5202
5362
  });
@@ -5258,7 +5418,7 @@ function OutlinePanel() {
5258
5418
  setSelectedBlockId(payload.sourceId);
5259
5419
  }
5260
5420
  };
5261
- return /* @__PURE__ */ React63.createElement(Box, null, /* @__PURE__ */ React63.createElement(Typography, { variant: "subtitle2", component: "h2", sx: { fontWeight: "bold", mb: 0.5, px: 0.5 } }, t("outline.title", "Outline")), /* @__PURE__ */ React63.createElement(Typography, { variant: "caption", sx: { display: "block", color: "text.secondary", px: 0.5, mb: 1 } }, t("outline.hint", "Click a row to select. Drag a row to reorder or move it into a container.")), tree ? /* @__PURE__ */ React63.createElement(
5421
+ return /* @__PURE__ */ React65.createElement(Box, null, /* @__PURE__ */ React65.createElement(Typography, { variant: "subtitle2", component: "h2", sx: { fontWeight: "bold", mb: 0.5, px: 0.5 } }, t("outline.title", "Outline")), /* @__PURE__ */ React65.createElement(Typography, { variant: "caption", sx: { display: "block", color: "text.secondary", px: 0.5, mb: 1 } }, t("outline.hint", "Click a row to select. Drag a row to reorder or move it into a container.")), tree ? /* @__PURE__ */ React65.createElement(
5262
5422
  OutlineRow,
5263
5423
  {
5264
5424
  node: tree,
@@ -5269,7 +5429,7 @@ function OutlinePanel() {
5269
5429
  setDragging,
5270
5430
  performMove
5271
5431
  }
5272
- ) : /* @__PURE__ */ React63.createElement(Typography, { variant: "body2", sx: { color: "text.secondary", px: 0.5 } }, "Nothing to outline."));
5432
+ ) : /* @__PURE__ */ React65.createElement(Typography, { variant: "body2", sx: { color: "text.secondary", px: 0.5 } }, "Nothing to outline."));
5273
5433
  }
5274
5434
  function OutlineRow({
5275
5435
  node,
@@ -5355,7 +5515,7 @@ function OutlineRow({
5355
5515
  const patch = buildMovePatch(document2, node.id, node.parent, node.parent, nextIndex + (delta > 0 ? 1 : 0));
5356
5516
  if (patch) setDocument(patch);
5357
5517
  };
5358
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(Box, { sx: { position: "relative" } }, dropPos === "before" && /* @__PURE__ */ React63.createElement(DropLine, { depth }), /* @__PURE__ */ React63.createElement(
5518
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(Box, { sx: { position: "relative" } }, dropPos === "before" && /* @__PURE__ */ React65.createElement(DropLine, { depth }), /* @__PURE__ */ React65.createElement(
5359
5519
  Stack,
5360
5520
  {
5361
5521
  direction: "row",
@@ -5388,7 +5548,7 @@ function OutlineRow({
5388
5548
  userSelect: "none"
5389
5549
  }
5390
5550
  },
5391
- hasChildren ? /* @__PURE__ */ React63.createElement(
5551
+ hasChildren ? /* @__PURE__ */ React65.createElement(
5392
5552
  Box,
5393
5553
  {
5394
5554
  role: "button",
@@ -5399,9 +5559,9 @@ function OutlineRow({
5399
5559
  },
5400
5560
  sx: { display: "flex", alignItems: "center", cursor: "pointer" }
5401
5561
  },
5402
- expanded ? /* @__PURE__ */ React63.createElement(ExpandMore, { fontSize: "small" }) : /* @__PURE__ */ React63.createElement(ChevronRight, { fontSize: "small" })
5403
- ) : /* @__PURE__ */ React63.createElement(Box, { sx: { width: 20 } }),
5404
- /* @__PURE__ */ React63.createElement(
5562
+ expanded ? /* @__PURE__ */ React65.createElement(ExpandMore, { fontSize: "small" }) : /* @__PURE__ */ React65.createElement(ChevronRight, { fontSize: "small" })
5563
+ ) : /* @__PURE__ */ React65.createElement(Box, { sx: { width: 20 } }),
5564
+ /* @__PURE__ */ React65.createElement(
5405
5565
  Box,
5406
5566
  {
5407
5567
  sx: {
@@ -5413,7 +5573,7 @@ function OutlineRow({
5413
5573
  },
5414
5574
  node.icon
5415
5575
  ),
5416
- /* @__PURE__ */ React63.createElement(
5576
+ /* @__PURE__ */ React65.createElement(
5417
5577
  Typography,
5418
5578
  {
5419
5579
  variant: "body2",
@@ -5425,7 +5585,7 @@ function OutlineRow({
5425
5585
  },
5426
5586
  node.label
5427
5587
  ),
5428
- node.preview && /* @__PURE__ */ React63.createElement(
5588
+ node.preview && /* @__PURE__ */ React65.createElement(
5429
5589
  Typography,
5430
5590
  {
5431
5591
  variant: "body2",
@@ -5441,7 +5601,7 @@ function OutlineRow({
5441
5601
  "\u2014 ",
5442
5602
  node.preview
5443
5603
  ),
5444
- canMove && /* @__PURE__ */ React63.createElement(
5604
+ canMove && /* @__PURE__ */ React65.createElement(
5445
5605
  Box,
5446
5606
  {
5447
5607
  className: "outline-move-btns",
@@ -5452,7 +5612,7 @@ function OutlineRow({
5452
5612
  transition: "opacity 120ms"
5453
5613
  }
5454
5614
  },
5455
- /* @__PURE__ */ React63.createElement(Tooltip, { title: "Move up" }, /* @__PURE__ */ React63.createElement("span", null, /* @__PURE__ */ React63.createElement(
5615
+ /* @__PURE__ */ React65.createElement(Tooltip, { title: "Move up" }, /* @__PURE__ */ React65.createElement("span", null, /* @__PURE__ */ React65.createElement(
5456
5616
  IconButton,
5457
5617
  {
5458
5618
  size: "small",
@@ -5464,9 +5624,9 @@ function OutlineRow({
5464
5624
  "aria-label": `Move ${node.label} up`,
5465
5625
  sx: { p: 0.25 }
5466
5626
  },
5467
- /* @__PURE__ */ React63.createElement(KeyboardArrowUp, { fontSize: "small" })
5627
+ /* @__PURE__ */ React65.createElement(KeyboardArrowUp, { fontSize: "small" })
5468
5628
  ))),
5469
- /* @__PURE__ */ React63.createElement(Tooltip, { title: "Move down" }, /* @__PURE__ */ React63.createElement("span", null, /* @__PURE__ */ React63.createElement(
5629
+ /* @__PURE__ */ React65.createElement(Tooltip, { title: "Move down" }, /* @__PURE__ */ React65.createElement("span", null, /* @__PURE__ */ React65.createElement(
5470
5630
  IconButton,
5471
5631
  {
5472
5632
  size: "small",
@@ -5478,10 +5638,10 @@ function OutlineRow({
5478
5638
  "aria-label": `Move ${node.label} down`,
5479
5639
  sx: { p: 0.25 }
5480
5640
  },
5481
- /* @__PURE__ */ React63.createElement(KeyboardArrowDown, { fontSize: "small" })
5641
+ /* @__PURE__ */ React65.createElement(KeyboardArrowDown, { fontSize: "small" })
5482
5642
  )))
5483
5643
  )
5484
- ), dropPos === "after" && /* @__PURE__ */ React63.createElement(DropLine, { depth })), hasChildren && expanded && /* @__PURE__ */ React63.createElement(Box, null, node.children.map((child) => /* @__PURE__ */ React63.createElement(
5644
+ ), dropPos === "after" && /* @__PURE__ */ React65.createElement(DropLine, { depth })), hasChildren && expanded && /* @__PURE__ */ React65.createElement(Box, null, node.children.map((child) => /* @__PURE__ */ React65.createElement(
5485
5645
  OutlineRow,
5486
5646
  {
5487
5647
  key: child.id,
@@ -5496,7 +5656,7 @@ function OutlineRow({
5496
5656
  ))));
5497
5657
  }
5498
5658
  function DropLine({ depth }) {
5499
- return /* @__PURE__ */ React63.createElement(
5659
+ return /* @__PURE__ */ React65.createElement(
5500
5660
  Box,
5501
5661
  {
5502
5662
  sx: {
@@ -5504,7 +5664,7 @@ function DropLine({ depth }) {
5504
5664
  height: 0
5505
5665
  }
5506
5666
  },
5507
- /* @__PURE__ */ React63.createElement(
5667
+ /* @__PURE__ */ React65.createElement(
5508
5668
  Box,
5509
5669
  {
5510
5670
  sx: {
@@ -5565,7 +5725,7 @@ function NewTemplatePickerDialog({
5565
5725
  }
5566
5726
  });
5567
5727
  const pickable = samples.filter((s) => s.id !== "empty-email");
5568
- return /* @__PURE__ */ React63.createElement(Dialog, { open, onClose: busy ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React63.createElement(DialogTitle, null, kind === "sample" ? t("picker.title-sample", "New sample") : t("picker.title-template", "New template")), /* @__PURE__ */ React63.createElement(DialogContent, { dividers: true }, /* @__PURE__ */ React63.createElement(Typography, { variant: "subtitle2", sx: { mb: 1 } }, t("picker.start-from", "Start from")), /* @__PURE__ */ React63.createElement(
5728
+ return /* @__PURE__ */ React65.createElement(Dialog, { open, onClose: busy ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React65.createElement(DialogTitle, null, kind === "sample" ? t("picker.title-sample", "New sample") : t("picker.title-template", "New template")), /* @__PURE__ */ React65.createElement(DialogContent, { dividers: true }, /* @__PURE__ */ React65.createElement(Typography, { variant: "subtitle2", sx: { mb: 1 } }, t("picker.start-from", "Start from")), /* @__PURE__ */ React65.createElement(
5569
5729
  List,
5570
5730
  {
5571
5731
  dense: true,
@@ -5579,24 +5739,24 @@ function NewTemplatePickerDialog({
5579
5739
  overflowY: "auto"
5580
5740
  }
5581
5741
  },
5582
- /* @__PURE__ */ React63.createElement(
5742
+ /* @__PURE__ */ React65.createElement(
5583
5743
  ListItemButton,
5584
5744
  {
5585
5745
  selected: selectedStarter === null,
5586
5746
  onClick: () => setSelectedStarter(null)
5587
5747
  },
5588
- /* @__PURE__ */ React63.createElement(Box, { sx: { display: "flex", alignItems: "center", gap: 1.5, flex: 1 } }, /* @__PURE__ */ React63.createElement(InsertDriveFileOutlined, { fontSize: "small", sx: { color: "text.secondary" } }), /* @__PURE__ */ React63.createElement(ListItemText, { primary: t("picker.blank-title", "Blank"), secondary: t("picker.blank-desc", "Start from an empty email") }))
5748
+ /* @__PURE__ */ React65.createElement(Box, { sx: { display: "flex", alignItems: "center", gap: 1.5, flex: 1 } }, /* @__PURE__ */ React65.createElement(InsertDriveFileOutlined, { fontSize: "small", sx: { color: "text.secondary" } }), /* @__PURE__ */ React65.createElement(ListItemText, { primary: t("picker.blank-title", "Blank"), secondary: t("picker.blank-desc", "Start from an empty email") }))
5589
5749
  ),
5590
- pickable.map((s) => /* @__PURE__ */ React63.createElement(
5750
+ pickable.map((s) => /* @__PURE__ */ React65.createElement(
5591
5751
  ListItemButton,
5592
5752
  {
5593
5753
  key: s.id,
5594
5754
  selected: selectedStarter === s.id,
5595
5755
  onClick: () => setSelectedStarter(s.id)
5596
5756
  },
5597
- /* @__PURE__ */ React63.createElement(Box, { sx: { display: "flex", alignItems: "center", gap: 1.5, flex: 1 } }, /* @__PURE__ */ React63.createElement(DescriptionOutlined, { fontSize: "small", sx: { color: "text.secondary" } }), /* @__PURE__ */ React63.createElement(ListItemText, { primary: s.slug, secondary: s.description }))
5757
+ /* @__PURE__ */ React65.createElement(Box, { sx: { display: "flex", alignItems: "center", gap: 1.5, flex: 1 } }, /* @__PURE__ */ React65.createElement(DescriptionOutlined, { fontSize: "small", sx: { color: "text.secondary" } }), /* @__PURE__ */ React65.createElement(ListItemText, { primary: s.slug, secondary: s.description }))
5598
5758
  ))
5599
- ), /* @__PURE__ */ React63.createElement(
5759
+ ), /* @__PURE__ */ React65.createElement(
5600
5760
  TextField,
5601
5761
  {
5602
5762
  autoFocus: true,
@@ -5616,7 +5776,7 @@ function NewTemplatePickerDialog({
5616
5776
  helperText: error != null ? error : " ",
5617
5777
  disabled: busy
5618
5778
  }
5619
- )), /* @__PURE__ */ React63.createElement(DialogActions, null, /* @__PURE__ */ React63.createElement(Button$1, { onClick: onClose, disabled: busy }, t("common.cancel", "Cancel")), /* @__PURE__ */ React63.createElement(Button$1, { variant: "contained", onClick: handleCreate, disabled: busy }, busy ? t("picker.creating", "Creating\u2026") : kind === "sample" ? t("picker.create-sample", "Create sample") : t("picker.create-template", "Create template"))));
5779
+ )), /* @__PURE__ */ React65.createElement(DialogActions, null, /* @__PURE__ */ React65.createElement(Button$1, { onClick: onClose, disabled: busy }, t("common.cancel", "Cancel")), /* @__PURE__ */ React65.createElement(Button$1, { variant: "contained", onClick: handleCreate, disabled: busy }, busy ? t("picker.creating", "Creating\u2026") : kind === "sample" ? t("picker.create-sample", "Create sample") : t("picker.create-template", "Create template"))));
5620
5780
  }
5621
5781
  function RenameDialog({
5622
5782
  open,
@@ -5678,7 +5838,7 @@ function RenameDialog({
5678
5838
  setSubmitting(false);
5679
5839
  }
5680
5840
  });
5681
- return /* @__PURE__ */ React63.createElement(Dialog, { open, onClose: submitting ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React63.createElement(DialogTitle, null, t("rename.title", "Edit details")), /* @__PURE__ */ React63.createElement(DialogContent, null, /* @__PURE__ */ React63.createElement(
5841
+ return /* @__PURE__ */ React65.createElement(Dialog, { open, onClose: submitting ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React65.createElement(DialogTitle, null, t("rename.title", "Edit details")), /* @__PURE__ */ React65.createElement(DialogContent, null, /* @__PURE__ */ React65.createElement(
5682
5842
  TextField,
5683
5843
  {
5684
5844
  autoFocus: true,
@@ -5698,7 +5858,7 @@ function RenameDialog({
5698
5858
  if (e.key === "Enter" && !submitting) handleSubmit();
5699
5859
  }
5700
5860
  }
5701
- ), /* @__PURE__ */ React63.createElement(Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mt: 1, mb: 0.5 } }, t("rename.tags", "Tags")), tags.length > 0 ? /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 0.5, sx: { flexWrap: "wrap", gap: 0.5, mb: 1 } }, tags.map((tag) => /* @__PURE__ */ React63.createElement(
5861
+ ), /* @__PURE__ */ React65.createElement(Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mt: 1, mb: 0.5 } }, t("rename.tags", "Tags")), tags.length > 0 ? /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 0.5, sx: { flexWrap: "wrap", gap: 0.5, mb: 1 } }, tags.map((tag) => /* @__PURE__ */ React65.createElement(
5702
5862
  Chip,
5703
5863
  {
5704
5864
  key: tag,
@@ -5706,7 +5866,7 @@ function RenameDialog({
5706
5866
  size: "small",
5707
5867
  onDelete: submitting ? void 0 : () => removeTag(tag)
5708
5868
  }
5709
- ))) : /* @__PURE__ */ React63.createElement(Typography, { variant: "caption", sx: { color: "text.disabled", display: "block", mb: 1 } }, t("rename.no-tags", "No tags yet.")), /* @__PURE__ */ React63.createElement(
5869
+ ))) : /* @__PURE__ */ React65.createElement(Typography, { variant: "caption", sx: { color: "text.disabled", display: "block", mb: 1 } }, t("rename.no-tags", "No tags yet.")), /* @__PURE__ */ React65.createElement(
5710
5870
  TextField,
5711
5871
  {
5712
5872
  size: "small",
@@ -5725,20 +5885,20 @@ function RenameDialog({
5725
5885
  }
5726
5886
  },
5727
5887
  InputProps: {
5728
- endAdornment: /* @__PURE__ */ React63.createElement(InputAdornment, { position: "end" }, /* @__PURE__ */ React63.createElement(
5888
+ endAdornment: /* @__PURE__ */ React65.createElement(InputAdornment, { position: "end" }, /* @__PURE__ */ React65.createElement(
5729
5889
  Button$1,
5730
5890
  {
5731
5891
  size: "small",
5732
5892
  onClick: addTag,
5733
5893
  disabled: !tagInput.trim() || submitting,
5734
- startIcon: /* @__PURE__ */ React63.createElement(AddOutlined, { fontSize: "small" }),
5894
+ startIcon: /* @__PURE__ */ React65.createElement(AddOutlined, { fontSize: "small" }),
5735
5895
  sx: { textTransform: "none" }
5736
5896
  },
5737
5897
  t("common.add", "Add")
5738
5898
  ))
5739
5899
  }
5740
5900
  }
5741
- ), /* @__PURE__ */ React63.createElement(Box, { sx: { minHeight: 8 } })), /* @__PURE__ */ React63.createElement(DialogActions, null, /* @__PURE__ */ React63.createElement(Button$1, { onClick: onClose, disabled: submitting }, t("common.cancel", "Cancel")), /* @__PURE__ */ React63.createElement(
5901
+ ), /* @__PURE__ */ React65.createElement(Box, { sx: { minHeight: 8 } })), /* @__PURE__ */ React65.createElement(DialogActions, null, /* @__PURE__ */ React65.createElement(Button$1, { onClick: onClose, disabled: submitting }, t("common.cancel", "Cancel")), /* @__PURE__ */ React65.createElement(
5742
5902
  Button$1,
5743
5903
  {
5744
5904
  onClick: handleSubmit,
@@ -5808,7 +5968,7 @@ function SaveTemplateDialog({
5808
5968
  setInternalError("");
5809
5969
  onClose();
5810
5970
  };
5811
- return /* @__PURE__ */ React63.createElement(
5971
+ return /* @__PURE__ */ React65.createElement(
5812
5972
  Dialog,
5813
5973
  {
5814
5974
  open,
@@ -5816,8 +5976,8 @@ function SaveTemplateDialog({
5816
5976
  maxWidth: "sm",
5817
5977
  fullWidth: true
5818
5978
  },
5819
- /* @__PURE__ */ React63.createElement(DialogTitle, null, mode === "new" ? t("save-dialog.title-new", "Create a new template") : t("save-dialog.title", "Save as a new template")),
5820
- /* @__PURE__ */ React63.createElement(DialogContent, null, /* @__PURE__ */ React63.createElement(Box, { sx: { pt: 1 } }, /* @__PURE__ */ React63.createElement(
5979
+ /* @__PURE__ */ React65.createElement(DialogTitle, null, mode === "new" ? t("save-dialog.title-new", "Create a new template") : t("save-dialog.title", "Save as a new template")),
5980
+ /* @__PURE__ */ React65.createElement(DialogContent, null, /* @__PURE__ */ React65.createElement(Box, { sx: { pt: 1 } }, /* @__PURE__ */ React65.createElement(
5821
5981
  TextField,
5822
5982
  {
5823
5983
  autoFocus: true,
@@ -5840,7 +6000,7 @@ function SaveTemplateDialog({
5840
6000
  disabled: isSubmitting
5841
6001
  }
5842
6002
  ))),
5843
- /* @__PURE__ */ React63.createElement(DialogActions, null, /* @__PURE__ */ React63.createElement(Button$1, { onClick: handleCancel, disabled: isSubmitting }, t("common.cancel", "Cancel")), /* @__PURE__ */ React63.createElement(
6003
+ /* @__PURE__ */ React65.createElement(DialogActions, null, /* @__PURE__ */ React65.createElement(Button$1, { onClick: handleCancel, disabled: isSubmitting }, t("common.cancel", "Cancel")), /* @__PURE__ */ React65.createElement(
5844
6004
  Button$1,
5845
6005
  {
5846
6006
  onClick: handleSave,
@@ -6161,7 +6321,7 @@ function SamplesDrawer({
6161
6321
  return null;
6162
6322
  }
6163
6323
  const existingSlugs = templates.map((t2) => t2.slug);
6164
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(
6324
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(
6165
6325
  Drawer,
6166
6326
  {
6167
6327
  variant: "persistent",
@@ -6176,7 +6336,7 @@ function SamplesDrawer({
6176
6336
  transitionDuration: { enter: enterDuration, exit: exitDuration },
6177
6337
  sx: { width: samplesDrawerOpen ? SAMPLES_DRAWER_WIDTH : 0 }
6178
6338
  },
6179
- /* @__PURE__ */ React63.createElement(
6339
+ /* @__PURE__ */ React65.createElement(
6180
6340
  Stack,
6181
6341
  {
6182
6342
  py: 1,
@@ -6186,16 +6346,16 @@ function SamplesDrawer({
6186
6346
  spacing: 1.5,
6187
6347
  sx: { overflowY: "auto" }
6188
6348
  },
6189
- /* @__PURE__ */ React63.createElement(Stack, { direction: "row", alignItems: "center", justifyContent: "space-between", sx: { pt: 1 } }, /* @__PURE__ */ React63.createElement(Typography, { variant: "h6", component: "h1" }, /* @__PURE__ */ React63.createElement(Trans, { id: "drawer.library" }, "Library")), saveAs && (activeLeftTab === "templates" || activeLeftTab === "samples") && /* @__PURE__ */ React63.createElement(Tooltip, { title: activeLeftTab === "samples" ? t("drawer.new-sample", "New sample") : t("drawer.new-template", "New template") }, /* @__PURE__ */ React63.createElement(
6349
+ /* @__PURE__ */ React65.createElement(Stack, { direction: "row", alignItems: "center", justifyContent: "space-between", sx: { pt: 1 } }, /* @__PURE__ */ React65.createElement(Typography, { variant: "h6", component: "h1" }, /* @__PURE__ */ React65.createElement(Trans, { id: "drawer.library" }, "Library")), saveAs && (activeLeftTab === "templates" || activeLeftTab === "samples") && /* @__PURE__ */ React65.createElement(Tooltip, { title: activeLeftTab === "samples" ? t("drawer.new-sample", "New sample") : t("drawer.new-template", "New template") }, /* @__PURE__ */ React65.createElement(
6190
6350
  IconButton,
6191
6351
  {
6192
6352
  size: "small",
6193
6353
  onClick: () => openNewPicker(activeLeftTab === "samples" ? "sample" : "template"),
6194
6354
  "aria-label": activeLeftTab === "samples" ? t("drawer.new-sample", "New sample") : t("drawer.new-template", "New template")
6195
6355
  },
6196
- /* @__PURE__ */ React63.createElement(AddOutlined, { fontSize: "small" })
6356
+ /* @__PURE__ */ React65.createElement(AddOutlined, { fontSize: "small" })
6197
6357
  ))),
6198
- /* @__PURE__ */ React63.createElement(
6358
+ /* @__PURE__ */ React65.createElement(
6199
6359
  Tabs,
6200
6360
  {
6201
6361
  value: activeLeftTab,
@@ -6203,11 +6363,11 @@ function SamplesDrawer({
6203
6363
  variant: "fullWidth",
6204
6364
  sx: { minHeight: 36, "& .MuiTab-root": { minHeight: 36, minWidth: 0, px: 1, fontSize: 13 } }
6205
6365
  },
6206
- /* @__PURE__ */ React63.createElement(Tab, { value: "templates", label: t("drawer.tab.templates", "Templates"), disabled: !loadTemplates }),
6207
- /* @__PURE__ */ React63.createElement(Tab, { value: "samples", label: t("drawer.tab.samples", "Samples") }),
6208
- /* @__PURE__ */ React63.createElement(Tab, { value: "outline", label: t("drawer.tab.outline", "Outline") })
6366
+ /* @__PURE__ */ React65.createElement(Tab, { value: "templates", label: t("drawer.tab.templates", "Templates"), disabled: !loadTemplates }),
6367
+ /* @__PURE__ */ React65.createElement(Tab, { value: "samples", label: t("drawer.tab.samples", "Samples") }),
6368
+ /* @__PURE__ */ React65.createElement(Tab, { value: "outline", label: t("drawer.tab.outline", "Outline") })
6209
6369
  ),
6210
- activeLeftTab === "outline" ? /* @__PURE__ */ React63.createElement(OutlinePanel, null) : /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(
6370
+ activeLeftTab === "outline" ? /* @__PURE__ */ React65.createElement(OutlinePanel, null) : /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(
6211
6371
  TextField,
6212
6372
  {
6213
6373
  size: "small",
@@ -6215,10 +6375,10 @@ function SamplesDrawer({
6215
6375
  value: search,
6216
6376
  onChange: (e) => setSearch(e.target.value),
6217
6377
  InputProps: {
6218
- startAdornment: /* @__PURE__ */ React63.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React63.createElement(SearchOutlined, { fontSize: "small" }))
6378
+ startAdornment: /* @__PURE__ */ React65.createElement(InputAdornment, { position: "start" }, /* @__PURE__ */ React65.createElement(SearchOutlined, { fontSize: "small" }))
6219
6379
  }
6220
6380
  }
6221
- ), /* @__PURE__ */ React63.createElement(
6381
+ ), /* @__PURE__ */ React65.createElement(
6222
6382
  TextField,
6223
6383
  {
6224
6384
  select: true,
@@ -6227,8 +6387,8 @@ function SamplesDrawer({
6227
6387
  value: sortKey,
6228
6388
  onChange: (e) => setSortKey(e.target.value)
6229
6389
  },
6230
- SORT_OPTIONS.map((opt) => /* @__PURE__ */ React63.createElement(MenuItem, { key: opt.value, value: opt.value }, t(opt.labelKey, opt.fallback)))
6231
- ), allTags.length > 0 && /* @__PURE__ */ React63.createElement(Stack, { direction: "row", sx: { flexWrap: "wrap", gap: 0.5 } }, /* @__PURE__ */ React63.createElement(
6390
+ SORT_OPTIONS.map((opt) => /* @__PURE__ */ React65.createElement(MenuItem, { key: opt.value, value: opt.value }, t(opt.labelKey, opt.fallback)))
6391
+ ), allTags.length > 0 && /* @__PURE__ */ React65.createElement(Stack, { direction: "row", sx: { flexWrap: "wrap", gap: 0.5 } }, /* @__PURE__ */ React65.createElement(
6232
6392
  Chip,
6233
6393
  {
6234
6394
  label: t("drawer.tag.all", "All"),
@@ -6238,7 +6398,7 @@ function SamplesDrawer({
6238
6398
  variant: activeTags.length === 0 ? "filled" : "outlined",
6239
6399
  onClick: () => setActiveTags([])
6240
6400
  }
6241
- ), allTags.map((tag) => /* @__PURE__ */ React63.createElement(
6401
+ ), allTags.map((tag) => /* @__PURE__ */ React65.createElement(
6242
6402
  Chip,
6243
6403
  {
6244
6404
  key: tag,
@@ -6249,7 +6409,7 @@ function SamplesDrawer({
6249
6409
  variant: activeTags.includes(tag) ? "filled" : "outlined",
6250
6410
  onClick: () => toggleTag(tag)
6251
6411
  }
6252
- ))), activeLeftTab === "templates" ? /* @__PURE__ */ React63.createElement(Box, null, loadingTemplates ? /* @__PURE__ */ React63.createElement(Stack, { alignItems: "center", width: "100%", py: 2 }, /* @__PURE__ */ React63.createElement(CircularProgress, { size: 24 })) : templatesError ? /* @__PURE__ */ React63.createElement(Alert, { severity: "error", sx: { my: 1 } }, templatesError) : filteredTemplates.length > 0 ? /* @__PURE__ */ React63.createElement(Stack, { spacing: 0.25, sx: { width: "100%" } }, filteredTemplates.map((template) => /* @__PURE__ */ React63.createElement(
6412
+ ))), activeLeftTab === "templates" ? /* @__PURE__ */ React65.createElement(Box, null, loadingTemplates ? /* @__PURE__ */ React65.createElement(Stack, { alignItems: "center", width: "100%", py: 2 }, /* @__PURE__ */ React65.createElement(CircularProgress, { size: 24 })) : templatesError ? /* @__PURE__ */ React65.createElement(Alert, { severity: "error", sx: { my: 1 } }, templatesError) : filteredTemplates.length > 0 ? /* @__PURE__ */ React65.createElement(Stack, { spacing: 0.25, sx: { width: "100%" } }, filteredTemplates.map((template) => /* @__PURE__ */ React65.createElement(
6253
6413
  TemplateRow,
6254
6414
  {
6255
6415
  key: template.id,
@@ -6261,7 +6421,7 @@ function SamplesDrawer({
6261
6421
  onDelete: deleteTemplate ? () => handleDelete(template) : void 0,
6262
6422
  onPromote: setTemplateKind ? () => handleSetKind(template, "sample") : void 0
6263
6423
  }
6264
- ))) : /* @__PURE__ */ React63.createElement(Typography, { variant: "body2", sx: { color: "text.secondary", py: 1 } }, templateRows.length === 0 ? t("drawer.no-templates", "No saved templates yet") : t("drawer.no-templates-match", "No templates match your filters"))) : /* @__PURE__ */ React63.createElement(Box, null, loadingSamples ? /* @__PURE__ */ React63.createElement(Stack, { alignItems: "center", width: "100%", py: 2 }, /* @__PURE__ */ React63.createElement(CircularProgress, { size: 24 })) : filteredSamples.length > 0 ? /* @__PURE__ */ React63.createElement(Stack, { spacing: 0.25, sx: { width: "100%" } }, filteredSamples.map((sample) => /* @__PURE__ */ React63.createElement(
6424
+ ))) : /* @__PURE__ */ React65.createElement(Typography, { variant: "body2", sx: { color: "text.secondary", py: 1 } }, templateRows.length === 0 ? t("drawer.no-templates", "No saved templates yet") : t("drawer.no-templates-match", "No templates match your filters"))) : /* @__PURE__ */ React65.createElement(Box, null, loadingSamples ? /* @__PURE__ */ React65.createElement(Stack, { alignItems: "center", width: "100%", py: 2 }, /* @__PURE__ */ React65.createElement(CircularProgress, { size: 24 })) : filteredSamples.length > 0 ? /* @__PURE__ */ React65.createElement(Stack, { spacing: 0.25, sx: { width: "100%" } }, filteredSamples.map((sample) => /* @__PURE__ */ React65.createElement(
6265
6425
  TemplateRow,
6266
6426
  {
6267
6427
  key: sample.id,
@@ -6273,9 +6433,9 @@ function SamplesDrawer({
6273
6433
  onDelete: deleteTemplate ? () => handleDelete(sample) : void 0,
6274
6434
  onDemote: setTemplateKind ? () => handleSetKind(sample, "template") : void 0
6275
6435
  }
6276
- ))) : /* @__PURE__ */ React63.createElement(Typography, { variant: "body2", sx: { color: "text.secondary", py: 1 } }, sampleRows.length === 0 ? t("drawer.no-samples", "No samples available") : t("drawer.no-samples-match", "No samples match your filters"))))
6436
+ ))) : /* @__PURE__ */ React65.createElement(Typography, { variant: "body2", sx: { color: "text.secondary", py: 1 } }, sampleRows.length === 0 ? t("drawer.no-samples", "No samples available") : t("drawer.no-samples-match", "No samples match your filters"))))
6277
6437
  )
6278
- ), renameTarget && /* @__PURE__ */ React63.createElement(
6438
+ ), renameTarget && /* @__PURE__ */ React65.createElement(
6279
6439
  RenameDialog,
6280
6440
  {
6281
6441
  open: !!renameTarget,
@@ -6285,7 +6445,7 @@ function SamplesDrawer({
6285
6445
  onClose: () => setRenameTarget(null),
6286
6446
  onSubmit: handleRenameSubmit
6287
6447
  }
6288
- ), /* @__PURE__ */ React63.createElement(
6448
+ ), /* @__PURE__ */ React65.createElement(
6289
6449
  SaveTemplateDialog,
6290
6450
  {
6291
6451
  open: !!pendingSaveAs,
@@ -6298,7 +6458,7 @@ function SamplesDrawer({
6298
6458
  defaultName: (_b = pendingSaveAs == null ? void 0 : pendingSaveAs.defaultName) != null ? _b : "New Template",
6299
6459
  error: newError
6300
6460
  }
6301
- ), /* @__PURE__ */ React63.createElement(
6461
+ ), /* @__PURE__ */ React65.createElement(
6302
6462
  NewTemplatePickerDialog,
6303
6463
  {
6304
6464
  open: pickerKind !== null,
@@ -6382,7 +6542,7 @@ var ICON_SX = {
6382
6542
  borderColor: "cadet.300"
6383
6543
  };
6384
6544
  function BlockTypeButton({ label, icon, onClick }) {
6385
- return /* @__PURE__ */ React63.createElement(
6545
+ return /* @__PURE__ */ React65.createElement(
6386
6546
  Button$1,
6387
6547
  {
6388
6548
  sx: BUTTON_SX2,
@@ -6391,14 +6551,14 @@ function BlockTypeButton({ label, icon, onClick }) {
6391
6551
  onClick();
6392
6552
  }
6393
6553
  },
6394
- /* @__PURE__ */ React63.createElement(Box, { sx: ICON_SX }, icon),
6395
- /* @__PURE__ */ React63.createElement(Typography, { variant: "body2" }, label)
6554
+ /* @__PURE__ */ React65.createElement(Box, { sx: ICON_SX }, icon),
6555
+ /* @__PURE__ */ React65.createElement(Typography, { variant: "body2" }, label)
6396
6556
  );
6397
6557
  }
6398
6558
  var BUTTONS = [
6399
6559
  {
6400
6560
  label: "Heading",
6401
- icon: /* @__PURE__ */ React63.createElement(HMobiledataOutlined, null),
6561
+ icon: /* @__PURE__ */ React65.createElement(HMobiledataOutlined, null),
6402
6562
  block: () => ({
6403
6563
  type: "Heading",
6404
6564
  data: {
@@ -6411,7 +6571,7 @@ var BUTTONS = [
6411
6571
  },
6412
6572
  {
6413
6573
  label: "Text",
6414
- icon: /* @__PURE__ */ React63.createElement(NotesOutlined, null),
6574
+ icon: /* @__PURE__ */ React65.createElement(NotesOutlined, null),
6415
6575
  block: () => ({
6416
6576
  type: "Text",
6417
6577
  data: {
@@ -6423,9 +6583,28 @@ var BUTTONS = [
6423
6583
  }
6424
6584
  })
6425
6585
  },
6586
+ {
6587
+ label: "OTP / Code",
6588
+ icon: /* @__PURE__ */ React65.createElement(PinOutlined, null),
6589
+ block: () => ({
6590
+ type: "Otp",
6591
+ data: {
6592
+ props: { code: t("default.otp", "123456") },
6593
+ style: {
6594
+ padding: { top: 16, bottom: 16, left: 24, right: 24 },
6595
+ textAlign: "center",
6596
+ letterSpacing: 8,
6597
+ fontSize: 32,
6598
+ fontWeight: "bold",
6599
+ backgroundColor: "#F4F4F4",
6600
+ borderRadius: 8
6601
+ }
6602
+ }
6603
+ })
6604
+ },
6426
6605
  {
6427
6606
  label: "Button",
6428
- icon: /* @__PURE__ */ React63.createElement(SmartButtonOutlined, null),
6607
+ icon: /* @__PURE__ */ React65.createElement(SmartButtonOutlined, null),
6429
6608
  block: () => ({
6430
6609
  type: "Button",
6431
6610
  data: {
@@ -6439,7 +6618,7 @@ var BUTTONS = [
6439
6618
  },
6440
6619
  {
6441
6620
  label: "Image",
6442
- icon: /* @__PURE__ */ React63.createElement(ImageOutlined, null),
6621
+ icon: /* @__PURE__ */ React65.createElement(ImageOutlined, null),
6443
6622
  block: () => ({
6444
6623
  type: "Image",
6445
6624
  data: {
@@ -6455,7 +6634,7 @@ var BUTTONS = [
6455
6634
  },
6456
6635
  {
6457
6636
  label: "Avatar",
6458
- icon: /* @__PURE__ */ React63.createElement(AccountCircleOutlined, null),
6637
+ icon: /* @__PURE__ */ React65.createElement(AccountCircleOutlined, null),
6459
6638
  block: () => ({
6460
6639
  type: "Avatar",
6461
6640
  data: {
@@ -6469,7 +6648,7 @@ var BUTTONS = [
6469
6648
  },
6470
6649
  {
6471
6650
  label: "Personal Signature",
6472
- icon: /* @__PURE__ */ React63.createElement(ContactMailOutlined, null),
6651
+ icon: /* @__PURE__ */ React65.createElement(ContactMailOutlined, null),
6473
6652
  block: () => ({
6474
6653
  type: "Signature",
6475
6654
  data: {
@@ -6491,7 +6670,7 @@ var BUTTONS = [
6491
6670
  },
6492
6671
  {
6493
6672
  label: "Company Signature",
6494
- icon: /* @__PURE__ */ React63.createElement(BusinessOutlined, null),
6673
+ icon: /* @__PURE__ */ React65.createElement(BusinessOutlined, null),
6495
6674
  block: () => ({
6496
6675
  type: "Signature",
6497
6676
  data: {
@@ -6511,7 +6690,7 @@ var BUTTONS = [
6511
6690
  },
6512
6691
  {
6513
6692
  label: "Divider",
6514
- icon: /* @__PURE__ */ React63.createElement(HorizontalRuleOutlined, null),
6693
+ icon: /* @__PURE__ */ React65.createElement(HorizontalRuleOutlined, null),
6515
6694
  block: () => ({
6516
6695
  type: "Divider",
6517
6696
  data: {
@@ -6524,7 +6703,7 @@ var BUTTONS = [
6524
6703
  },
6525
6704
  {
6526
6705
  label: "Spacer",
6527
- icon: /* @__PURE__ */ React63.createElement(Crop32Outlined, null),
6706
+ icon: /* @__PURE__ */ React65.createElement(Crop32Outlined, null),
6528
6707
  block: () => ({
6529
6708
  type: "Spacer",
6530
6709
  data: {}
@@ -6532,7 +6711,7 @@ var BUTTONS = [
6532
6711
  },
6533
6712
  {
6534
6713
  label: "Html",
6535
- icon: /* @__PURE__ */ React63.createElement(HtmlOutlined, null),
6714
+ icon: /* @__PURE__ */ React65.createElement(HtmlOutlined, null),
6536
6715
  block: () => ({
6537
6716
  type: "Html",
6538
6717
  data: {
@@ -6547,7 +6726,7 @@ var BUTTONS = [
6547
6726
  },
6548
6727
  {
6549
6728
  label: "Columns",
6550
- icon: /* @__PURE__ */ React63.createElement(ViewColumnOutlined, null),
6729
+ icon: /* @__PURE__ */ React65.createElement(ViewColumnOutlined, null),
6551
6730
  block: () => ({
6552
6731
  type: "ColumnsContainer",
6553
6732
  data: {
@@ -6562,7 +6741,7 @@ var BUTTONS = [
6562
6741
  },
6563
6742
  {
6564
6743
  label: "Container",
6565
- icon: /* @__PURE__ */ React63.createElement(LibraryAddOutlined, null),
6744
+ icon: /* @__PURE__ */ React65.createElement(LibraryAddOutlined, null),
6566
6745
  block: () => ({
6567
6746
  type: "Container",
6568
6747
  data: {
@@ -6617,7 +6796,7 @@ function BlocksMenu({ anchorEl, setAnchorEl, onSelect }) {
6617
6796
  return null;
6618
6797
  }
6619
6798
  const hasCustomBlocks = customBlocks && customBlocks.length > 0;
6620
- return /* @__PURE__ */ React63.createElement(
6799
+ return /* @__PURE__ */ React65.createElement(
6621
6800
  Menu,
6622
6801
  {
6623
6802
  open: true,
@@ -6626,7 +6805,7 @@ function BlocksMenu({ anchorEl, setAnchorEl, onSelect }) {
6626
6805
  anchorOrigin: { vertical: "bottom", horizontal: "center" },
6627
6806
  transformOrigin: { vertical: "top", horizontal: "center" }
6628
6807
  },
6629
- /* @__PURE__ */ React63.createElement(Box, { sx: { p: 1, display: "grid", gridTemplateColumns: "1fr 1fr 1fr 1fr" } }, BUTTONS.map((k, i) => /* @__PURE__ */ React63.createElement(
6808
+ /* @__PURE__ */ React65.createElement(Box, { sx: { p: 1, display: "grid", gridTemplateColumns: "1fr 1fr 1fr 1fr" } }, BUTTONS.map((k, i) => /* @__PURE__ */ React65.createElement(
6630
6809
  BlockTypeButton,
6631
6810
  {
6632
6811
  key: i,
@@ -6635,14 +6814,14 @@ function BlocksMenu({ anchorEl, setAnchorEl, onSelect }) {
6635
6814
  onClick: () => onClick(k.block())
6636
6815
  }
6637
6816
  ))),
6638
- hasCustomBlocks && /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(Divider$1, { sx: { my: 1 } }), /* @__PURE__ */ React63.createElement(Typography, { variant: "caption", sx: { px: 2, py: 0.5, color: "text.secondary" } }, t("block-add.custom-blocks", "Custom blocks")), /* @__PURE__ */ React63.createElement(Box, { sx: { p: 1, display: "grid", gridTemplateColumns: "1fr 1fr 1fr 1fr" } }, customBlocks.map((cb, i) => {
6817
+ hasCustomBlocks && /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(Divider$1, { sx: { my: 1 } }), /* @__PURE__ */ React65.createElement(Typography, { variant: "caption", sx: { px: 2, py: 0.5, color: "text.secondary" } }, t("block-add.custom-blocks", "Custom blocks")), /* @__PURE__ */ React65.createElement(Box, { sx: { p: 1, display: "grid", gridTemplateColumns: "1fr 1fr 1fr 1fr" } }, customBlocks.map((cb, i) => {
6639
6818
  var _a;
6640
- return /* @__PURE__ */ React63.createElement(
6819
+ return /* @__PURE__ */ React65.createElement(
6641
6820
  BlockTypeButton,
6642
6821
  {
6643
6822
  key: `custom-${i}`,
6644
6823
  label: cb.label,
6645
- icon: (_a = cb.icon) != null ? _a : /* @__PURE__ */ React63.createElement(WidgetsOutlined, null),
6824
+ icon: (_a = cb.icon) != null ? _a : /* @__PURE__ */ React65.createElement(WidgetsOutlined, null),
6646
6825
  onClick: () => onCustomBlockClick(cb)
6647
6826
  }
6648
6827
  );
@@ -6673,7 +6852,7 @@ function DividerButton({ buttonElement, onClick }) {
6673
6852
  window.removeEventListener("mousemove", listener);
6674
6853
  };
6675
6854
  }, [buttonElement, setVisible]);
6676
- return /* @__PURE__ */ React63.createElement(Fade, { in: visible }, /* @__PURE__ */ React63.createElement(
6855
+ return /* @__PURE__ */ React65.createElement(Fade, { in: visible }, /* @__PURE__ */ React65.createElement(
6677
6856
  IconButton,
6678
6857
  {
6679
6858
  size: "small",
@@ -6696,11 +6875,11 @@ function DividerButton({ buttonElement, onClick }) {
6696
6875
  onClick();
6697
6876
  }
6698
6877
  },
6699
- /* @__PURE__ */ React63.createElement(AddOutlined, { fontSize: "small" })
6878
+ /* @__PURE__ */ React65.createElement(AddOutlined, { fontSize: "small" })
6700
6879
  ));
6701
6880
  }
6702
6881
  function PlaceholderButton({ onClick }) {
6703
- return /* @__PURE__ */ React63.createElement(
6882
+ return /* @__PURE__ */ React65.createElement(
6704
6883
  ButtonBase,
6705
6884
  {
6706
6885
  onClick: (ev) => {
@@ -6716,7 +6895,7 @@ function PlaceholderButton({ onClick }) {
6716
6895
  bgcolor: "rgba(0,0,0, 0.05)"
6717
6896
  }
6718
6897
  },
6719
- /* @__PURE__ */ React63.createElement(
6898
+ /* @__PURE__ */ React65.createElement(
6720
6899
  AddOutlined,
6721
6900
  {
6722
6901
  sx: {
@@ -6740,19 +6919,19 @@ function AddBlockButton({ onSelect, placeholder }) {
6740
6919
  };
6741
6920
  const renderButton2 = () => {
6742
6921
  if (placeholder) {
6743
- return /* @__PURE__ */ React63.createElement(PlaceholderButton, { onClick: handleButtonClick });
6922
+ return /* @__PURE__ */ React65.createElement(PlaceholderButton, { onClick: handleButtonClick });
6744
6923
  } else {
6745
- return /* @__PURE__ */ React63.createElement(DividerButton, { buttonElement, onClick: handleButtonClick });
6924
+ return /* @__PURE__ */ React65.createElement(DividerButton, { buttonElement, onClick: handleButtonClick });
6746
6925
  }
6747
6926
  };
6748
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement("div", { ref: setButtonElement, style: { position: "relative" } }, renderButton2()), /* @__PURE__ */ React63.createElement(BlocksMenu, { anchorEl: menuAnchorEl, setAnchorEl: setMenuAnchorEl, onSelect }));
6927
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement("div", { ref: setButtonElement, style: { position: "relative" } }, renderButton2()), /* @__PURE__ */ React65.createElement(BlocksMenu, { anchorEl: menuAnchorEl, setAnchorEl: setMenuAnchorEl, onSelect }));
6749
6928
  }
6750
6929
  var BlockParentContext = createContext(null);
6751
6930
  function BlockParentProvider({
6752
6931
  info,
6753
6932
  children
6754
6933
  }) {
6755
- return /* @__PURE__ */ React63.createElement(BlockParentContext.Provider, { value: info }, children);
6934
+ return /* @__PURE__ */ React65.createElement(BlockParentContext.Provider, { value: info }, children);
6756
6935
  }
6757
6936
  function useBlockParent() {
6758
6937
  return useContext(BlockParentContext);
@@ -6782,9 +6961,9 @@ function EditorChildrenIds({ childrenIds, onChange, parentRef }) {
6782
6961
  });
6783
6962
  };
6784
6963
  if (!childrenIds || childrenIds.length === 0) {
6785
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(AddBlockButton, { placeholder: true, onSelect: appendBlock }), parentRef && /* @__PURE__ */ React63.createElement(CanvasDropZone, { parentRef, targetIndex: 0, placeholder: true }));
6964
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(AddBlockButton, { placeholder: true, onSelect: appendBlock }), parentRef && /* @__PURE__ */ React65.createElement(CanvasDropZone, { parentRef, targetIndex: 0, placeholder: true }));
6786
6965
  }
6787
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, childrenIds.map((childId, i) => /* @__PURE__ */ React63.createElement(Fragment, { key: childId }, /* @__PURE__ */ React63.createElement(AddBlockButton, { onSelect: (block) => insertBlock(block, i) }), parentRef && /* @__PURE__ */ React63.createElement(CanvasDropZone, { parentRef, targetIndex: i }), parentRef ? /* @__PURE__ */ React63.createElement(BlockParentProvider, { info: { parent: parentRef, indexInParent: i } }, /* @__PURE__ */ React63.createElement(EditorBlock, { id: childId })) : /* @__PURE__ */ React63.createElement(EditorBlock, { id: childId }))), /* @__PURE__ */ React63.createElement(AddBlockButton, { onSelect: appendBlock }), parentRef && /* @__PURE__ */ React63.createElement(CanvasDropZone, { parentRef, targetIndex: childrenIds.length }));
6966
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, childrenIds.map((childId, i) => /* @__PURE__ */ React65.createElement(Fragment, { key: childId }, /* @__PURE__ */ React65.createElement(AddBlockButton, { onSelect: (block) => insertBlock(block, i) }), parentRef && /* @__PURE__ */ React65.createElement(CanvasDropZone, { parentRef, targetIndex: i }), parentRef ? /* @__PURE__ */ React65.createElement(BlockParentProvider, { info: { parent: parentRef, indexInParent: i } }, /* @__PURE__ */ React65.createElement(EditorBlock, { id: childId })) : /* @__PURE__ */ React65.createElement(EditorBlock, { id: childId }))), /* @__PURE__ */ React65.createElement(AddBlockButton, { onSelect: appendBlock }), parentRef && /* @__PURE__ */ React65.createElement(CanvasDropZone, { parentRef, targetIndex: childrenIds.length }));
6788
6967
  }
6789
6968
  function CanvasDropZone({
6790
6969
  parentRef,
@@ -6821,7 +7000,7 @@ function CanvasDropZone({
6821
7000
  }
6822
7001
  setDraggingBlock(null);
6823
7002
  };
6824
- return /* @__PURE__ */ React63.createElement(
7003
+ return /* @__PURE__ */ React65.createElement(
6825
7004
  Box,
6826
7005
  {
6827
7006
  onDragOver: handleDragOver,
@@ -6864,13 +7043,13 @@ function ColumnsContainerEditor({ style, props }) {
6864
7043
  });
6865
7044
  setSelectedBlockId(blockId);
6866
7045
  };
6867
- return /* @__PURE__ */ React63.createElement(
7046
+ return /* @__PURE__ */ React65.createElement(
6868
7047
  columns_container_default,
6869
7048
  {
6870
7049
  props: restProps,
6871
7050
  style,
6872
7051
  columns: [
6873
- /* @__PURE__ */ React63.createElement(
7052
+ /* @__PURE__ */ React65.createElement(
6874
7053
  EditorChildrenIds,
6875
7054
  {
6876
7055
  childrenIds: (_b = columns == null ? void 0 : columns[0]) == null ? void 0 : _b.childrenIds,
@@ -6878,7 +7057,7 @@ function ColumnsContainerEditor({ style, props }) {
6878
7057
  onChange: (change) => updateColumn(0, change)
6879
7058
  }
6880
7059
  ),
6881
- /* @__PURE__ */ React63.createElement(
7060
+ /* @__PURE__ */ React65.createElement(
6882
7061
  EditorChildrenIds,
6883
7062
  {
6884
7063
  childrenIds: (_c = columns == null ? void 0 : columns[1]) == null ? void 0 : _c.childrenIds,
@@ -6886,7 +7065,7 @@ function ColumnsContainerEditor({ style, props }) {
6886
7065
  onChange: (change) => updateColumn(1, change)
6887
7066
  }
6888
7067
  ),
6889
- /* @__PURE__ */ React63.createElement(
7068
+ /* @__PURE__ */ React65.createElement(
6890
7069
  EditorChildrenIds,
6891
7070
  {
6892
7071
  childrenIds: (_d = columns == null ? void 0 : columns[2]) == null ? void 0 : _d.childrenIds,
@@ -6903,7 +7082,7 @@ function ContainerEditor({ style, props }) {
6903
7082
  const childrenIds = (_a = props == null ? void 0 : props.childrenIds) != null ? _a : [];
6904
7083
  const document2 = useDocument();
6905
7084
  const currentBlockId = useCurrentBlockId();
6906
- return /* @__PURE__ */ React63.createElement(container_default, { style }, /* @__PURE__ */ React63.createElement(
7085
+ return /* @__PURE__ */ React65.createElement(container_default, { style }, /* @__PURE__ */ React65.createElement(
6907
7086
  EditorChildrenIds,
6908
7087
  {
6909
7088
  childrenIds,
@@ -6923,7 +7102,7 @@ function ContainerEditor({ style, props }) {
6923
7102
  }
6924
7103
  ));
6925
7104
  }
6926
- function getFontFamily7(fontFamily) {
7105
+ function getFontFamily8(fontFamily) {
6927
7106
  const f = fontFamily != null ? fontFamily : "MODERN_SANS";
6928
7107
  switch (f) {
6929
7108
  case "MODERN_SANS":
@@ -7039,14 +7218,14 @@ function EmailLayoutEditor(props) {
7039
7218
  }, [handleDelete, handleCopy, handlePaste]);
7040
7219
  const baseStyle = {
7041
7220
  color: (_b = props.textColor) != null ? _b : "#262626",
7042
- fontFamily: getFontFamily7(props.fontFamily),
7221
+ fontFamily: getFontFamily8(props.fontFamily),
7043
7222
  fontSize: "16px",
7044
7223
  fontWeight: "400",
7045
7224
  letterSpacing: "0.15008px",
7046
7225
  lineHeight: "1.5",
7047
7226
  margin: "0"
7048
7227
  };
7049
- const editorChildren = /* @__PURE__ */ React63.createElement(
7228
+ const editorChildren = /* @__PURE__ */ React65.createElement(
7050
7229
  EditorChildrenIds,
7051
7230
  {
7052
7231
  childrenIds,
@@ -7073,7 +7252,7 @@ function EmailLayoutEditor(props) {
7073
7252
  boxShadow: "0 1px 2px rgba(33, 36, 67, 0.05), 0 8px 24px rgba(33, 36, 67, 0.08)"
7074
7253
  };
7075
7254
  if (props.backdropDisabled) {
7076
- return /* @__PURE__ */ React63.createElement(
7255
+ return /* @__PURE__ */ React65.createElement(
7077
7256
  "div",
7078
7257
  {
7079
7258
  onClick: () => {
@@ -7085,7 +7264,7 @@ function EmailLayoutEditor(props) {
7085
7264
  minHeight: "100%"
7086
7265
  })
7087
7266
  },
7088
- /* @__PURE__ */ React63.createElement(
7267
+ /* @__PURE__ */ React65.createElement(
7089
7268
  "div",
7090
7269
  {
7091
7270
  style: __spreadProps(__spreadValues({}, cardStyle), {
@@ -7093,11 +7272,11 @@ function EmailLayoutEditor(props) {
7093
7272
  padding: "32px"
7094
7273
  })
7095
7274
  },
7096
- /* @__PURE__ */ React63.createElement("div", { style: { maxWidth: "600px", margin: "0 auto" } }, editorChildren)
7275
+ /* @__PURE__ */ React65.createElement("div", { style: { maxWidth: "600px", margin: "0 auto" } }, editorChildren)
7097
7276
  )
7098
7277
  );
7099
7278
  }
7100
- return /* @__PURE__ */ React63.createElement(
7279
+ return /* @__PURE__ */ React65.createElement(
7101
7280
  "div",
7102
7281
  {
7103
7282
  onClick: () => {
@@ -7109,7 +7288,7 @@ function EmailLayoutEditor(props) {
7109
7288
  minHeight: "100%"
7110
7289
  })
7111
7290
  },
7112
- /* @__PURE__ */ React63.createElement(
7291
+ /* @__PURE__ */ React65.createElement(
7113
7292
  "div",
7114
7293
  {
7115
7294
  style: __spreadProps(__spreadValues({}, cardStyle), {
@@ -7117,7 +7296,7 @@ function EmailLayoutEditor(props) {
7117
7296
  padding: "32px 0"
7118
7297
  })
7119
7298
  },
7120
- /* @__PURE__ */ React63.createElement(
7299
+ /* @__PURE__ */ React65.createElement(
7121
7300
  "table",
7122
7301
  {
7123
7302
  align: "center",
@@ -7141,7 +7320,7 @@ function EmailLayoutEditor(props) {
7141
7320
  cellPadding: "0",
7142
7321
  border: 0
7143
7322
  },
7144
- /* @__PURE__ */ React63.createElement("tbody", null, /* @__PURE__ */ React63.createElement("tr", { style: { width: "100%" } }, /* @__PURE__ */ React63.createElement("td", null, editorChildren)))
7323
+ /* @__PURE__ */ React65.createElement("tbody", null, /* @__PURE__ */ React65.createElement("tr", { style: { width: "100%" } }, /* @__PURE__ */ React65.createElement("td", null, editorChildren)))
7145
7324
  )
7146
7325
  )
7147
7326
  );
@@ -7301,7 +7480,7 @@ function TuneMenu({ blockId }) {
7301
7480
  resetDocument(nDocument);
7302
7481
  setSelectedBlockId(blockId);
7303
7482
  };
7304
- return /* @__PURE__ */ React63.createElement(Paper, { sx, onClick: (ev) => ev.stopPropagation() }, /* @__PURE__ */ React63.createElement(Stack, null, /* @__PURE__ */ React63.createElement(Tooltip, { title: t("tune.move-up", "Move up"), placement: "left-start" }, /* @__PURE__ */ React63.createElement(IconButton, { "aria-label": t("tune.move-up", "Move up"), onClick: () => handleMoveClick("up"), sx: { color: "text.primary" } }, /* @__PURE__ */ React63.createElement(ArrowUpwardOutlined, { fontSize: "small" }))), /* @__PURE__ */ React63.createElement(Tooltip, { title: t("tune.move-down", "Move down"), placement: "left-start" }, /* @__PURE__ */ React63.createElement(IconButton, { "aria-label": t("tune.move-down", "Move down"), onClick: () => handleMoveClick("down"), sx: { color: "text.primary" } }, /* @__PURE__ */ React63.createElement(ArrowDownwardOutlined, { fontSize: "small" }))), /* @__PURE__ */ React63.createElement(Tooltip, { title: t("tune.copy", "Copy block"), placement: "left-start" }, /* @__PURE__ */ React63.createElement(IconButton, { "aria-label": t("tune.copy", "Copy block"), onClick: handleCopyClick, sx: { color: "text.primary" } }, /* @__PURE__ */ React63.createElement(ContentCopyOutlined, { fontSize: "small" }))), /* @__PURE__ */ React63.createElement(Tooltip, { title: t("tune.delete", "Delete"), placement: "left-start" }, /* @__PURE__ */ React63.createElement(IconButton, { "aria-label": t("tune.delete", "Delete"), onClick: handleDeleteClick, sx: { color: "text.primary" } }, /* @__PURE__ */ React63.createElement(DeleteOutlined, { fontSize: "small" })))));
7483
+ return /* @__PURE__ */ React65.createElement(Paper, { sx, onClick: (ev) => ev.stopPropagation() }, /* @__PURE__ */ React65.createElement(Stack, null, /* @__PURE__ */ React65.createElement(Tooltip, { title: t("tune.move-up", "Move up"), placement: "left-start" }, /* @__PURE__ */ React65.createElement(IconButton, { "aria-label": t("tune.move-up", "Move up"), onClick: () => handleMoveClick("up"), sx: { color: "text.primary" } }, /* @__PURE__ */ React65.createElement(ArrowUpwardOutlined, { fontSize: "small" }))), /* @__PURE__ */ React65.createElement(Tooltip, { title: t("tune.move-down", "Move down"), placement: "left-start" }, /* @__PURE__ */ React65.createElement(IconButton, { "aria-label": t("tune.move-down", "Move down"), onClick: () => handleMoveClick("down"), sx: { color: "text.primary" } }, /* @__PURE__ */ React65.createElement(ArrowDownwardOutlined, { fontSize: "small" }))), /* @__PURE__ */ React65.createElement(Tooltip, { title: t("tune.copy", "Copy block"), placement: "left-start" }, /* @__PURE__ */ React65.createElement(IconButton, { "aria-label": t("tune.copy", "Copy block"), onClick: handleCopyClick, sx: { color: "text.primary" } }, /* @__PURE__ */ React65.createElement(ContentCopyOutlined, { fontSize: "small" }))), /* @__PURE__ */ React65.createElement(Tooltip, { title: t("tune.delete", "Delete"), placement: "left-start" }, /* @__PURE__ */ React65.createElement(IconButton, { "aria-label": t("tune.delete", "Delete"), onClick: handleDeleteClick, sx: { color: "text.primary" } }, /* @__PURE__ */ React65.createElement(DeleteOutlined, { fontSize: "small" })))));
7305
7484
  }
7306
7485
 
7307
7486
  // src/editor/blocks/helpers/block-wrappers/editor-block-wrapper.tsx
@@ -7323,7 +7502,7 @@ function EditorBlockWrapper({ children }) {
7323
7502
  if (selectedBlockId !== blockId) {
7324
7503
  return null;
7325
7504
  }
7326
- return /* @__PURE__ */ React63.createElement(TuneMenu, { blockId });
7505
+ return /* @__PURE__ */ React65.createElement(TuneMenu, { blockId });
7327
7506
  };
7328
7507
  const draggable = Boolean(blockParent) && selectedBlockId !== blockId;
7329
7508
  const handleDragStart = (e) => {
@@ -7336,7 +7515,7 @@ function EditorBlockWrapper({ children }) {
7336
7515
  const handleDragEnd = () => {
7337
7516
  setDraggingBlock(null);
7338
7517
  };
7339
- return /* @__PURE__ */ React63.createElement(
7518
+ return /* @__PURE__ */ React65.createElement(
7340
7519
  Box,
7341
7520
  {
7342
7521
  draggable,
@@ -7366,7 +7545,7 @@ function EditorBlockWrapper({ children }) {
7366
7545
  children
7367
7546
  );
7368
7547
  }
7369
- function getFontFamily8(fontFamily) {
7548
+ function getFontFamily9(fontFamily) {
7370
7549
  switch (fontFamily) {
7371
7550
  case "MODERN_SANS":
7372
7551
  return '"Helvetica Neue", "Arial Nova", "Nimbus Sans", Arial, sans-serif';
@@ -7389,7 +7568,7 @@ function getFontFamily8(fontFamily) {
7389
7568
  }
7390
7569
  return void 0;
7391
7570
  }
7392
- var getPadding11 = (padding) => padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : void 0;
7571
+ var getPadding12 = (padding) => padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : void 0;
7393
7572
  function getRoundedCorners2(props) {
7394
7573
  var _a;
7395
7574
  const buttonStyle = (_a = props == null ? void 0 : props.buttonStyle) != null ? _a : ButtonPropsDefaults.buttonStyle;
@@ -7435,12 +7614,12 @@ function ButtonEditor({ style, props }) {
7435
7614
  const wrapperStyle = {
7436
7615
  backgroundColor: (_e = style == null ? void 0 : style.backgroundColor) != null ? _e : void 0,
7437
7616
  textAlign: (_f = style == null ? void 0 : style.textAlign) != null ? _f : void 0,
7438
- padding: getPadding11(style == null ? void 0 : style.padding)
7617
+ padding: getPadding12(style == null ? void 0 : style.padding)
7439
7618
  };
7440
7619
  const linkStyle = {
7441
7620
  color: buttonTextColor,
7442
7621
  fontSize: (_g = style == null ? void 0 : style.fontSize) != null ? _g : 16,
7443
- fontFamily: getFontFamily8(style == null ? void 0 : style.fontFamily),
7622
+ fontFamily: getFontFamily9(style == null ? void 0 : style.fontFamily),
7444
7623
  fontWeight: (_h = style == null ? void 0 : style.fontWeight) != null ? _h : "bold",
7445
7624
  backgroundColor: buttonBackgroundColor,
7446
7625
  borderRadius: getRoundedCorners2(props),
@@ -7481,7 +7660,7 @@ function ButtonEditor({ style, props }) {
7481
7660
  selectionEnd: (_b2 = el.selectionEnd) != null ? _b2 : el.value.length
7482
7661
  });
7483
7662
  };
7484
- return /* @__PURE__ */ React63.createElement("div", { style: wrapperStyle }, /* @__PURE__ */ React63.createElement(
7663
+ return /* @__PURE__ */ React65.createElement("div", { style: wrapperStyle }, /* @__PURE__ */ React65.createElement(
7485
7664
  "input",
7486
7665
  {
7487
7666
  type: "text",
@@ -7498,7 +7677,7 @@ function ButtonEditor({ style, props }) {
7498
7677
  }
7499
7678
  ));
7500
7679
  }
7501
- return /* @__PURE__ */ React63.createElement("div", { style: wrapperStyle }, /* @__PURE__ */ React63.createElement("span", { style: linkStyle }, /* @__PURE__ */ React63.createElement("span", null, text)));
7680
+ return /* @__PURE__ */ React65.createElement("div", { style: wrapperStyle }, /* @__PURE__ */ React65.createElement("span", { style: linkStyle }, /* @__PURE__ */ React65.createElement("span", null, text)));
7502
7681
  }
7503
7682
  function useMarkdownToolbar({ text, isSelected, commitText, trackSelection }) {
7504
7683
  const textareaRef = useRef(null);
@@ -7715,7 +7894,7 @@ function InlineFormattingToolbar({
7715
7894
  }
7716
7895
  }, [activePrompt]);
7717
7896
  const preventBlur = (e) => e.preventDefault();
7718
- return /* @__PURE__ */ React63.createElement(Popper, { open: visible, anchorEl, placement: "top-start", style: { zIndex: 1300 } }, /* @__PURE__ */ React63.createElement(Paper, { elevation: 4, sx: { px: 0.5, py: 0.25, mb: 0.5 }, onMouseDown: preventBlur }, activePrompt === "link" ? /* @__PURE__ */ React63.createElement(Stack, { direction: "row", alignItems: "center", spacing: 0.5, sx: { px: 0.5 } }, /* @__PURE__ */ React63.createElement(
7897
+ return /* @__PURE__ */ React65.createElement(Popper, { open: visible, anchorEl, placement: "top-start", style: { zIndex: 1300 } }, /* @__PURE__ */ React65.createElement(Paper, { elevation: 4, sx: { px: 0.5, py: 0.25, mb: 0.5 }, onMouseDown: preventBlur }, activePrompt === "link" ? /* @__PURE__ */ React65.createElement(Stack, { direction: "row", alignItems: "center", spacing: 0.5, sx: { px: 0.5 } }, /* @__PURE__ */ React65.createElement(
7719
7898
  TextField,
7720
7899
  {
7721
7900
  inputRef: urlRef,
@@ -7737,7 +7916,7 @@ function InlineFormattingToolbar({
7737
7916
  },
7738
7917
  sx: { width: 220 }
7739
7918
  }
7740
- )) : activePrompt === "color" ? /* @__PURE__ */ React63.createElement(Stack, { direction: "row", alignItems: "center", spacing: 0.5, sx: { px: 0.5, py: 0.25 } }, /* @__PURE__ */ React63.createElement(
7919
+ )) : activePrompt === "color" ? /* @__PURE__ */ React65.createElement(Stack, { direction: "row", alignItems: "center", spacing: 0.5, sx: { px: 0.5, py: 0.25 } }, /* @__PURE__ */ React65.createElement(
7741
7920
  "input",
7742
7921
  {
7743
7922
  ref: colorRef,
@@ -7750,7 +7929,7 @@ function InlineFormattingToolbar({
7750
7929
  },
7751
7930
  style: { width: 40, height: 28, border: "none", padding: 0, background: "transparent", cursor: "pointer" }
7752
7931
  }
7753
- ), /* @__PURE__ */ React63.createElement(IconButton, { size: "small", onClick: onPromptCancel, title: t("common.cancel", "Cancel") }, /* @__PURE__ */ React63.createElement(FormatColorTextOutlined, { fontSize: "small" }))) : activePrompt === "font" ? /* @__PURE__ */ React63.createElement(Stack, { direction: "row", alignItems: "center", spacing: 0.5, sx: { px: 0.5, py: 0.25 } }, /* @__PURE__ */ React63.createElement(
7932
+ ), /* @__PURE__ */ React65.createElement(IconButton, { size: "small", onClick: onPromptCancel, title: t("common.cancel", "Cancel") }, /* @__PURE__ */ React65.createElement(FormatColorTextOutlined, { fontSize: "small" }))) : activePrompt === "font" ? /* @__PURE__ */ React65.createElement(Stack, { direction: "row", alignItems: "center", spacing: 0.5, sx: { px: 0.5, py: 0.25 } }, /* @__PURE__ */ React65.createElement(
7754
7933
  Select,
7755
7934
  {
7756
7935
  value: font,
@@ -7763,12 +7942,12 @@ function InlineFormattingToolbar({
7763
7942
  variant: "standard",
7764
7943
  sx: { minWidth: 180, fontSize: 13 }
7765
7944
  },
7766
- FONT_OPTIONS.map((opt) => /* @__PURE__ */ React63.createElement(MenuItem, { key: opt.value, value: opt.value, sx: { fontFamily: opt.value } }, opt.label))
7767
- ), /* @__PURE__ */ React63.createElement(IconButton, { size: "small", onClick: onPromptCancel, title: t("common.cancel", "Cancel") }, /* @__PURE__ */ React63.createElement(TextFieldsOutlined, { fontSize: "small" }))) : /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 0.25 }, /* @__PURE__ */ React63.createElement(IconButton, { size: "small", onClick: onBold, title: t("toolbar.bold-shortcut", "Bold (Cmd+B)"), "aria-label": t("toolbar.bold", "Bold") }, /* @__PURE__ */ React63.createElement(FormatBoldOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(IconButton, { size: "small", onClick: onItalic, title: t("toolbar.italic-shortcut", "Italic (Cmd+I)"), "aria-label": t("toolbar.italic", "Italic") }, /* @__PURE__ */ React63.createElement(FormatItalicOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(IconButton, { size: "small", onClick: onUnderline, title: t("toolbar.underline-shortcut", "Underline (Cmd+U)"), "aria-label": t("toolbar.underline", "Underline") }, /* @__PURE__ */ React63.createElement(FormatUnderlinedOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(IconButton, { size: "small", onClick: onOverline, title: t("toolbar.overline", "Overline"), "aria-label": t("toolbar.overline", "Overline") }, /* @__PURE__ */ React63.createElement(FormatOverlineOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(IconButton, { size: "small", onClick: onColorRequest, title: t("toolbar.text-color", "Text color"), "aria-label": t("toolbar.text-color", "Text color") }, /* @__PURE__ */ React63.createElement(FormatColorTextOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(IconButton, { size: "small", onClick: onFontRequest, title: t("toolbar.font-family", "Font family"), "aria-label": t("toolbar.font-family", "Font family") }, /* @__PURE__ */ React63.createElement(TextFieldsOutlined, { fontSize: "small" })), /* @__PURE__ */ React63.createElement(IconButton, { size: "small", onClick: onLinkRequest, title: t("toolbar.link-shortcut", "Link (Cmd+K)"), "aria-label": t("toolbar.link", "Link") }, /* @__PURE__ */ React63.createElement(LinkOutlined, { fontSize: "small" })))));
7945
+ FONT_OPTIONS.map((opt) => /* @__PURE__ */ React65.createElement(MenuItem, { key: opt.value, value: opt.value, sx: { fontFamily: opt.value } }, opt.label))
7946
+ ), /* @__PURE__ */ React65.createElement(IconButton, { size: "small", onClick: onPromptCancel, title: t("common.cancel", "Cancel") }, /* @__PURE__ */ React65.createElement(TextFieldsOutlined, { fontSize: "small" }))) : /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 0.25 }, /* @__PURE__ */ React65.createElement(IconButton, { size: "small", onClick: onBold, title: t("toolbar.bold-shortcut", "Bold (Cmd+B)"), "aria-label": t("toolbar.bold", "Bold") }, /* @__PURE__ */ React65.createElement(FormatBoldOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(IconButton, { size: "small", onClick: onItalic, title: t("toolbar.italic-shortcut", "Italic (Cmd+I)"), "aria-label": t("toolbar.italic", "Italic") }, /* @__PURE__ */ React65.createElement(FormatItalicOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(IconButton, { size: "small", onClick: onUnderline, title: t("toolbar.underline-shortcut", "Underline (Cmd+U)"), "aria-label": t("toolbar.underline", "Underline") }, /* @__PURE__ */ React65.createElement(FormatUnderlinedOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(IconButton, { size: "small", onClick: onOverline, title: t("toolbar.overline", "Overline"), "aria-label": t("toolbar.overline", "Overline") }, /* @__PURE__ */ React65.createElement(FormatOverlineOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(IconButton, { size: "small", onClick: onColorRequest, title: t("toolbar.text-color", "Text color"), "aria-label": t("toolbar.text-color", "Text color") }, /* @__PURE__ */ React65.createElement(FormatColorTextOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(IconButton, { size: "small", onClick: onFontRequest, title: t("toolbar.font-family", "Font family"), "aria-label": t("toolbar.font-family", "Font family") }, /* @__PURE__ */ React65.createElement(TextFieldsOutlined, { fontSize: "small" })), /* @__PURE__ */ React65.createElement(IconButton, { size: "small", onClick: onLinkRequest, title: t("toolbar.link-shortcut", "Link (Cmd+K)"), "aria-label": t("toolbar.link", "Link") }, /* @__PURE__ */ React65.createElement(LinkOutlined, { fontSize: "small" })))));
7768
7947
  }
7769
7948
 
7770
7949
  // src/editor/blocks/heading/heading-editor.tsx
7771
- function getFontFamily9(fontFamily) {
7950
+ function getFontFamily10(fontFamily) {
7772
7951
  switch (fontFamily) {
7773
7952
  case "MODERN_SANS":
7774
7953
  return '"Helvetica Neue", "Arial Nova", "Nimbus Sans", Arial, sans-serif';
@@ -7795,7 +7974,7 @@ function getFontFamily9(fontFamily) {
7795
7974
  }
7796
7975
  return void 0;
7797
7976
  }
7798
- function getPadding12(padding) {
7977
+ function getPadding13(padding) {
7799
7978
  if (!padding) return void 0;
7800
7979
  if (typeof padding === "object" && !Array.isArray(padding) && "top" in padding && "right" in padding && "bottom" in padding && "left" in padding) {
7801
7980
  return `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px`;
@@ -7840,11 +8019,11 @@ function HeadingEditor({ style, props }) {
7840
8019
  const [localText, setLocalText] = useState(textContent);
7841
8020
  const isMarkdown = (_c = props == null ? void 0 : props.markdown) != null ? _c : false;
7842
8021
  const rootBlock = document2.root;
7843
- const rootFontFamily = rootBlock && rootBlock.type === "EmailLayout" ? getFontFamily9(rootBlock.data.fontFamily) : '"Helvetica Neue", Arial, sans-serif';
8022
+ const rootFontFamily = rootBlock && rootBlock.type === "EmailLayout" ? getFontFamily10(rootBlock.data.fontFamily) : '"Helvetica Neue", Arial, sans-serif';
7844
8023
  useEffect(() => {
7845
8024
  setLocalText(textContent);
7846
8025
  }, [textContent]);
7847
- const fontFamily = getFontFamily9(style == null ? void 0 : style.fontFamily) || rootFontFamily;
8026
+ const fontFamily = getFontFamily10(style == null ? void 0 : style.fontFamily) || rootFontFamily;
7848
8027
  const hStyle = {
7849
8028
  color: (_d = style == null ? void 0 : style.color) != null ? _d : void 0,
7850
8029
  backgroundColor: (_e = style == null ? void 0 : style.backgroundColor) != null ? _e : void 0,
@@ -7855,7 +8034,7 @@ function HeadingEditor({ style, props }) {
7855
8034
  margin: 0,
7856
8035
  fontFamily,
7857
8036
  fontSize: getFontSize2(level),
7858
- padding: getPadding12(style == null ? void 0 : style.padding),
8037
+ padding: getPadding13(style == null ? void 0 : style.padding),
7859
8038
  width: "100%",
7860
8039
  minHeight: "1em"
7861
8040
  };
@@ -7919,7 +8098,7 @@ function HeadingEditor({ style, props }) {
7919
8098
  if (textareaRef.current) adjustTextareaHeight(textareaRef.current);
7920
8099
  }, [localText, isSelected]);
7921
8100
  if (isSelected) {
7922
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(
8101
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(
7923
8102
  "textarea",
7924
8103
  {
7925
8104
  ref: textareaRef,
@@ -7937,7 +8116,7 @@ function HeadingEditor({ style, props }) {
7937
8116
  rows: 1,
7938
8117
  onInput: (e) => adjustTextareaHeight(e.target)
7939
8118
  }
7940
- ), /* @__PURE__ */ React63.createElement(InlineFormattingToolbar, __spreadValues({ anchorEl: textareaRef.current }, toolbarProps)));
8119
+ ), /* @__PURE__ */ React65.createElement(InlineFormattingToolbar, __spreadValues({ anchorEl: textareaRef.current }, toolbarProps)));
7941
8120
  }
7942
8121
  const headingProps = isMarkdown ? {
7943
8122
  ref: displayRef,
@@ -7946,11 +8125,11 @@ function HeadingEditor({ style, props }) {
7946
8125
  } : { ref: displayRef, style: hStyle, children: textContent };
7947
8126
  switch (level) {
7948
8127
  case "h1":
7949
- return /* @__PURE__ */ React63.createElement("h1", __spreadValues({}, headingProps));
8128
+ return /* @__PURE__ */ React65.createElement("h1", __spreadValues({}, headingProps));
7950
8129
  case "h2":
7951
- return /* @__PURE__ */ React63.createElement("h2", __spreadValues({}, headingProps));
8130
+ return /* @__PURE__ */ React65.createElement("h2", __spreadValues({}, headingProps));
7952
8131
  case "h3":
7953
- return /* @__PURE__ */ React63.createElement("h3", __spreadValues({}, headingProps));
8132
+ return /* @__PURE__ */ React65.createElement("h3", __spreadValues({}, headingProps));
7954
8133
  }
7955
8134
  }
7956
8135
  function HtmlEditor({ style, props }) {
@@ -8015,7 +8194,7 @@ function HtmlEditor({ style, props }) {
8015
8194
  selectionEnd: (_b2 = el.selectionEnd) != null ? _b2 : el.value.length
8016
8195
  });
8017
8196
  };
8018
- return /* @__PURE__ */ React63.createElement("div", { style: cssStyle }, /* @__PURE__ */ React63.createElement(
8197
+ return /* @__PURE__ */ React65.createElement("div", { style: cssStyle }, /* @__PURE__ */ React65.createElement(
8019
8198
  "textarea",
8020
8199
  {
8021
8200
  value: localContents,
@@ -8035,9 +8214,72 @@ function HtmlEditor({ style, props }) {
8035
8214
  ));
8036
8215
  }
8037
8216
  if (!contents) {
8038
- return /* @__PURE__ */ React63.createElement("div", { style: cssStyle });
8217
+ return /* @__PURE__ */ React65.createElement("div", { style: cssStyle });
8039
8218
  }
8040
- return /* @__PURE__ */ React63.createElement("div", { style: cssStyle, dangerouslySetInnerHTML: { __html: contents } });
8219
+ return /* @__PURE__ */ React65.createElement("div", { style: cssStyle, dangerouslySetInnerHTML: { __html: contents } });
8220
+ }
8221
+ function OtpEditor({ props, style }) {
8222
+ var _a, _b, _c, _d, _e, _f;
8223
+ const blockId = useCurrentBlockId();
8224
+ const selectedBlockId = useSelectedBlockId();
8225
+ const isSelected = selectedBlockId === blockId;
8226
+ const code = (_a = props == null ? void 0 : props.code) != null ? _a : OtpPropsDefaults.code;
8227
+ const [localCode, setLocalCode] = useState(code);
8228
+ const inputRef = useRef(null);
8229
+ useEffect(() => {
8230
+ setLocalCode(code);
8231
+ }, [code]);
8232
+ useEffect(() => {
8233
+ if (isSelected && inputRef.current) {
8234
+ inputRef.current.focus();
8235
+ inputRef.current.select();
8236
+ }
8237
+ }, [isSelected]);
8238
+ if (!isSelected) {
8239
+ return /* @__PURE__ */ React65.createElement(otp_default, { props, style });
8240
+ }
8241
+ const commit = (newCode) => {
8242
+ setLocalCode(newCode);
8243
+ setDocument({
8244
+ [blockId]: {
8245
+ type: "Otp",
8246
+ data: {
8247
+ style,
8248
+ props: __spreadProps(__spreadValues({}, props), { code: newCode })
8249
+ }
8250
+ }
8251
+ });
8252
+ };
8253
+ const wrapperStyle = {
8254
+ textAlign: (_b = style == null ? void 0 : style.textAlign) != null ? _b : "center",
8255
+ padding: (style == null ? void 0 : style.padding) ? `${style.padding.top}px ${style.padding.right}px ${style.padding.bottom}px ${style.padding.left}px` : void 0
8256
+ };
8257
+ const inputStyle = {
8258
+ display: "inline-block",
8259
+ color: (_c = style == null ? void 0 : style.color) != null ? _c : "#000000",
8260
+ backgroundColor: (_d = style == null ? void 0 : style.backgroundColor) != null ? _d : "transparent",
8261
+ border: (style == null ? void 0 : style.borderColor) ? `1px solid ${style.borderColor}` : "1px dashed #999",
8262
+ borderRadius: (style == null ? void 0 : style.borderRadius) != null ? `${style.borderRadius}px` : 4,
8263
+ fontFamily: '"Nimbus Mono PS", "Courier New", "Cutive Mono", monospace',
8264
+ fontSize: (_e = style == null ? void 0 : style.fontSize) != null ? _e : 32,
8265
+ fontWeight: (_f = style == null ? void 0 : style.fontWeight) != null ? _f : "bold",
8266
+ letterSpacing: (style == null ? void 0 : style.letterSpacing) != null ? `${style.letterSpacing}px` : "4px",
8267
+ textAlign: "center",
8268
+ padding: "12px 20px",
8269
+ outline: "none",
8270
+ minWidth: 120
8271
+ };
8272
+ return /* @__PURE__ */ React65.createElement("div", { style: wrapperStyle }, /* @__PURE__ */ React65.createElement(
8273
+ "input",
8274
+ {
8275
+ ref: inputRef,
8276
+ type: "text",
8277
+ value: localCode,
8278
+ onChange: (e) => commit(e.target.value),
8279
+ style: inputStyle,
8280
+ onClick: (e) => e.stopPropagation()
8281
+ }
8282
+ ));
8041
8283
  }
8042
8284
  function getImageBorderRadius2(shape, size) {
8043
8285
  switch (shape) {
@@ -8152,7 +8394,7 @@ function SignatureEditor({ style, props }) {
8152
8394
  backgroundColor: (_p = style == null ? void 0 : style.backgroundColor) != null ? _p : void 0,
8153
8395
  padding: (style == null ? void 0 : style.padding) ? `${style.padding.top}px ${style.padding.right}px ${style.padding.bottom}px ${style.padding.left}px` : void 0
8154
8396
  };
8155
- const imageElement = imageUrl ? /* @__PURE__ */ React63.createElement(
8397
+ const imageElement = imageUrl ? /* @__PURE__ */ React65.createElement(
8156
8398
  "img",
8157
8399
  {
8158
8400
  src: imageUrl,
@@ -8170,7 +8412,7 @@ function SignatureEditor({ style, props }) {
8170
8412
  }
8171
8413
  }
8172
8414
  ) : null;
8173
- const greetingElement = isSelected ? /* @__PURE__ */ React63.createElement("div", { onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React63.createElement(
8415
+ const greetingElement = isSelected ? /* @__PURE__ */ React65.createElement("div", { onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React65.createElement(
8174
8416
  "input",
8175
8417
  {
8176
8418
  value: localGreeting,
@@ -8181,8 +8423,8 @@ function SignatureEditor({ style, props }) {
8181
8423
  placeholder: "Greeting (e.g. Best regards,)",
8182
8424
  style: __spreadValues(__spreadValues({}, inputBase), greetingStyle)
8183
8425
  }
8184
- )) : greeting ? /* @__PURE__ */ React63.createElement("p", { style: greetingStyle }, greeting) : null;
8185
- const textContent = isSelected ? /* @__PURE__ */ React63.createElement("div", { onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React63.createElement(
8426
+ )) : greeting ? /* @__PURE__ */ React65.createElement("p", { style: greetingStyle }, greeting) : null;
8427
+ const textContent = isSelected ? /* @__PURE__ */ React65.createElement("div", { onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React65.createElement(
8186
8428
  "input",
8187
8429
  {
8188
8430
  value: localName,
@@ -8193,7 +8435,7 @@ function SignatureEditor({ style, props }) {
8193
8435
  placeholder: "Name",
8194
8436
  style: __spreadValues(__spreadValues({}, inputBase), nameStyle)
8195
8437
  }
8196
- ), /* @__PURE__ */ React63.createElement(
8438
+ ), /* @__PURE__ */ React65.createElement(
8197
8439
  "input",
8198
8440
  {
8199
8441
  value: localTitle,
@@ -8204,7 +8446,7 @@ function SignatureEditor({ style, props }) {
8204
8446
  placeholder: "Title",
8205
8447
  style: __spreadValues(__spreadValues({}, inputBase), detailStyle)
8206
8448
  }
8207
- ), /* @__PURE__ */ React63.createElement(
8449
+ ), /* @__PURE__ */ React65.createElement(
8208
8450
  "input",
8209
8451
  {
8210
8452
  value: localCompany,
@@ -8215,7 +8457,7 @@ function SignatureEditor({ style, props }) {
8215
8457
  placeholder: "Company",
8216
8458
  style: __spreadValues(__spreadValues({}, inputBase), detailStyle)
8217
8459
  }
8218
- ), /* @__PURE__ */ React63.createElement(
8460
+ ), /* @__PURE__ */ React65.createElement(
8219
8461
  "input",
8220
8462
  {
8221
8463
  value: localAddress,
@@ -8226,7 +8468,7 @@ function SignatureEditor({ style, props }) {
8226
8468
  placeholder: "Address",
8227
8469
  style: __spreadValues(__spreadValues({}, inputBase), detailStyle)
8228
8470
  }
8229
- ), /* @__PURE__ */ React63.createElement(
8471
+ ), /* @__PURE__ */ React65.createElement(
8230
8472
  "input",
8231
8473
  {
8232
8474
  value: localEmail,
@@ -8237,7 +8479,7 @@ function SignatureEditor({ style, props }) {
8237
8479
  placeholder: "Email",
8238
8480
  style: __spreadProps(__spreadValues(__spreadValues({}, inputBase), linkStyle), { marginTop: 4, display: "block" })
8239
8481
  }
8240
- ), /* @__PURE__ */ React63.createElement(
8482
+ ), /* @__PURE__ */ React65.createElement(
8241
8483
  "input",
8242
8484
  {
8243
8485
  value: localPhone,
@@ -8248,7 +8490,7 @@ function SignatureEditor({ style, props }) {
8248
8490
  placeholder: "Phone",
8249
8491
  style: __spreadProps(__spreadValues(__spreadValues({}, inputBase), linkStyle), { display: "block" })
8250
8492
  }
8251
- ), /* @__PURE__ */ React63.createElement(
8493
+ ), /* @__PURE__ */ React65.createElement(
8252
8494
  "input",
8253
8495
  {
8254
8496
  value: localWebsite,
@@ -8259,13 +8501,13 @@ function SignatureEditor({ style, props }) {
8259
8501
  placeholder: "Website",
8260
8502
  style: __spreadProps(__spreadValues(__spreadValues({}, inputBase), linkStyle), { display: "block" })
8261
8503
  }
8262
- )) : /* @__PURE__ */ React63.createElement("div", null, name && /* @__PURE__ */ React63.createElement("p", { style: nameStyle }, name), title && /* @__PURE__ */ React63.createElement("p", { style: detailStyle }, title), company && /* @__PURE__ */ React63.createElement("p", { style: detailStyle }, company), address && /* @__PURE__ */ React63.createElement("p", { style: detailStyle }, address), (email || phone || website) && /* @__PURE__ */ React63.createElement("p", { style: __spreadProps(__spreadValues({}, detailStyle), { marginTop: 4 }) }, email && /* @__PURE__ */ React63.createElement("span", { style: linkStyle }, email), email && (phone || website) && /* @__PURE__ */ React63.createElement("span", { style: detailStyle }, " \xB7 "), phone && /* @__PURE__ */ React63.createElement("span", { style: linkStyle }, phone), phone && website && /* @__PURE__ */ React63.createElement("span", { style: detailStyle }, " \xB7 "), website && /* @__PURE__ */ React63.createElement("span", { style: linkStyle }, website)), !name && !title && !company && !email && !phone && !website && /* @__PURE__ */ React63.createElement("p", { style: detailStyle }, "Click to edit signature"));
8504
+ )) : /* @__PURE__ */ React65.createElement("div", null, name && /* @__PURE__ */ React65.createElement("p", { style: nameStyle }, name), title && /* @__PURE__ */ React65.createElement("p", { style: detailStyle }, title), company && /* @__PURE__ */ React65.createElement("p", { style: detailStyle }, company), address && /* @__PURE__ */ React65.createElement("p", { style: detailStyle }, address), (email || phone || website) && /* @__PURE__ */ React65.createElement("p", { style: __spreadProps(__spreadValues({}, detailStyle), { marginTop: 4 }) }, email && /* @__PURE__ */ React65.createElement("span", { style: linkStyle }, email), email && (phone || website) && /* @__PURE__ */ React65.createElement("span", { style: detailStyle }, " \xB7 "), phone && /* @__PURE__ */ React65.createElement("span", { style: linkStyle }, phone), phone && website && /* @__PURE__ */ React65.createElement("span", { style: detailStyle }, " \xB7 "), website && /* @__PURE__ */ React65.createElement("span", { style: linkStyle }, website)), !name && !title && !company && !email && !phone && !website && /* @__PURE__ */ React65.createElement("p", { style: detailStyle }, "Click to edit signature"));
8263
8505
  if (layout === "vertical") {
8264
- return /* @__PURE__ */ React63.createElement("div", { style: wrapperStyle }, greetingElement, imageElement && /* @__PURE__ */ React63.createElement("div", { style: { marginBottom: 12 } }, imageElement), textContent);
8506
+ return /* @__PURE__ */ React65.createElement("div", { style: wrapperStyle }, greetingElement, imageElement && /* @__PURE__ */ React65.createElement("div", { style: { marginBottom: 12 } }, imageElement), textContent);
8265
8507
  }
8266
- return /* @__PURE__ */ React63.createElement("div", { style: wrapperStyle }, greetingElement, /* @__PURE__ */ React63.createElement("table", { cellPadding: "0", cellSpacing: "0", border: 0, role: "presentation" }, /* @__PURE__ */ React63.createElement("tbody", null, /* @__PURE__ */ React63.createElement("tr", null, imageElement && /* @__PURE__ */ React63.createElement("td", { style: { verticalAlign: "middle", paddingRight: 16 } }, imageElement), /* @__PURE__ */ React63.createElement("td", { style: { verticalAlign: "middle" } }, textContent)))));
8508
+ return /* @__PURE__ */ React65.createElement("div", { style: wrapperStyle }, greetingElement, /* @__PURE__ */ React65.createElement("table", { cellPadding: "0", cellSpacing: "0", border: 0, role: "presentation" }, /* @__PURE__ */ React65.createElement("tbody", null, /* @__PURE__ */ React65.createElement("tr", null, imageElement && /* @__PURE__ */ React65.createElement("td", { style: { verticalAlign: "middle", paddingRight: 16 } }, imageElement), /* @__PURE__ */ React65.createElement("td", { style: { verticalAlign: "middle" } }, textContent)))));
8267
8509
  }
8268
- function getFontFamily10(fontFamily) {
8510
+ function getFontFamily11(fontFamily) {
8269
8511
  switch (fontFamily) {
8270
8512
  case "MODERN_SANS":
8271
8513
  return '"Helvetica Neue", "Arial Nova", "Nimbus Sans", Arial, sans-serif';
@@ -8292,7 +8534,7 @@ function getFontFamily10(fontFamily) {
8292
8534
  }
8293
8535
  return void 0;
8294
8536
  }
8295
- function getPadding13(padding) {
8537
+ function getPadding14(padding) {
8296
8538
  if (!padding) return void 0;
8297
8539
  if (typeof padding === "object" && !Array.isArray(padding) && "top" in padding && "right" in padding && "bottom" in padding && "left" in padding) {
8298
8540
  return `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px`;
@@ -8326,11 +8568,11 @@ function TextEditor({ style, props }) {
8326
8568
  const [localText, setLocalText] = useState(textContent);
8327
8569
  const isMarkdown = (_b = props == null ? void 0 : props.markdown) != null ? _b : false;
8328
8570
  const rootBlock = document2.root;
8329
- const rootFontFamily = rootBlock && rootBlock.type === "EmailLayout" ? getFontFamily10(rootBlock.data.fontFamily) : '"Helvetica Neue", Arial, sans-serif';
8571
+ const rootFontFamily = rootBlock && rootBlock.type === "EmailLayout" ? getFontFamily11(rootBlock.data.fontFamily) : '"Helvetica Neue", Arial, sans-serif';
8330
8572
  useEffect(() => {
8331
8573
  setLocalText(textContent);
8332
8574
  }, [textContent]);
8333
- const fontFamily = getFontFamily10(style == null ? void 0 : style.fontFamily) || rootFontFamily;
8575
+ const fontFamily = getFontFamily11(style == null ? void 0 : style.fontFamily) || rootFontFamily;
8334
8576
  const wStyle = {
8335
8577
  color: (_c = style == null ? void 0 : style.color) != null ? _c : void 0,
8336
8578
  backgroundColor: (_d = style == null ? void 0 : style.backgroundColor) != null ? _d : void 0,
@@ -8340,7 +8582,7 @@ function TextEditor({ style, props }) {
8340
8582
  lineHeight: (_g = style == null ? void 0 : style.lineHeight) != null ? _g : void 0,
8341
8583
  letterSpacing: (style == null ? void 0 : style.letterSpacing) != null ? `${style.letterSpacing}px` : void 0,
8342
8584
  textAlign: (_h = style == null ? void 0 : style.textAlign) != null ? _h : void 0,
8343
- padding: getPadding13(style == null ? void 0 : style.padding),
8585
+ padding: getPadding14(style == null ? void 0 : style.padding),
8344
8586
  width: "100%",
8345
8587
  minHeight: "1em"
8346
8588
  };
@@ -8407,7 +8649,7 @@ function TextEditor({ style, props }) {
8407
8649
  if (textareaRef.current) adjustTextareaHeight(textareaRef.current);
8408
8650
  }, [localText, isSelected]);
8409
8651
  if (isSelected) {
8410
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(
8652
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(
8411
8653
  "textarea",
8412
8654
  {
8413
8655
  ref: textareaRef,
@@ -8425,10 +8667,10 @@ function TextEditor({ style, props }) {
8425
8667
  rows: 1,
8426
8668
  onInput: (e) => adjustTextareaHeight(e.target)
8427
8669
  }
8428
- ), /* @__PURE__ */ React63.createElement(InlineFormattingToolbar, __spreadValues({ anchorEl: textareaRef.current }, toolbarProps)));
8670
+ ), /* @__PURE__ */ React65.createElement(InlineFormattingToolbar, __spreadValues({ anchorEl: textareaRef.current }, toolbarProps)));
8429
8671
  }
8430
8672
  if (isMarkdown) {
8431
- return /* @__PURE__ */ React63.createElement(
8673
+ return /* @__PURE__ */ React65.createElement(
8432
8674
  "div",
8433
8675
  {
8434
8676
  ref: displayRef,
@@ -8437,34 +8679,34 @@ function TextEditor({ style, props }) {
8437
8679
  }
8438
8680
  );
8439
8681
  }
8440
- return /* @__PURE__ */ React63.createElement("div", { ref: displayRef, style: wStyle }, textContent);
8682
+ return /* @__PURE__ */ React65.createElement("div", { ref: displayRef, style: wStyle }, textContent);
8441
8683
  }
8442
8684
 
8443
8685
  // src/editor/core.tsx
8444
8686
  var EDITOR_DICTIONARY = buildBlockConfigurationDictionary({
8445
8687
  Avatar: {
8446
8688
  schema: AvatarPropsSchema,
8447
- Component: (props) => /* @__PURE__ */ React63.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React63.createElement(avatar_default, __spreadValues({}, props)))
8689
+ Component: (props) => /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(avatar_default, __spreadValues({}, props)))
8448
8690
  },
8449
8691
  Button: {
8450
8692
  schema: ButtonPropsSchema,
8451
- Component: (props) => /* @__PURE__ */ React63.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React63.createElement(ButtonEditor, __spreadValues({}, props)))
8693
+ Component: (props) => /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(ButtonEditor, __spreadValues({}, props)))
8452
8694
  },
8453
8695
  Container: {
8454
8696
  schema: container_props_schema_default,
8455
- Component: (props) => /* @__PURE__ */ React63.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React63.createElement(ContainerEditor, __spreadValues({}, props)))
8697
+ Component: (props) => /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(ContainerEditor, __spreadValues({}, props)))
8456
8698
  },
8457
8699
  ColumnsContainer: {
8458
8700
  schema: columns_container_props_schema_default2,
8459
- Component: (props) => /* @__PURE__ */ React63.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React63.createElement(ColumnsContainerEditor, __spreadValues({}, props)))
8701
+ Component: (props) => /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(ColumnsContainerEditor, __spreadValues({}, props)))
8460
8702
  },
8461
8703
  Heading: {
8462
8704
  schema: HeadingPropsSchema,
8463
- Component: (props) => /* @__PURE__ */ React63.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React63.createElement(HeadingEditor, __spreadValues({}, props)))
8705
+ Component: (props) => /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(HeadingEditor, __spreadValues({}, props)))
8464
8706
  },
8465
8707
  Html: {
8466
8708
  schema: HtmlPropsSchema,
8467
- Component: (props) => /* @__PURE__ */ React63.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React63.createElement(HtmlEditor, __spreadValues({}, props)))
8709
+ Component: (props) => /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(HtmlEditor, __spreadValues({}, props)))
8468
8710
  },
8469
8711
  Image: {
8470
8712
  schema: ImagePropsSchema,
@@ -8476,28 +8718,32 @@ var EDITOR_DICTIONARY = buildBlockConfigurationDictionary({
8476
8718
  linkHref: null
8477
8719
  })
8478
8720
  });
8479
- return /* @__PURE__ */ React63.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React63.createElement(image_default, __spreadValues({}, props)));
8721
+ return /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(image_default, __spreadValues({}, props)));
8480
8722
  }
8481
8723
  },
8724
+ Otp: {
8725
+ schema: OtpPropsSchema,
8726
+ Component: (props) => /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(OtpEditor, __spreadValues({}, props)))
8727
+ },
8482
8728
  Text: {
8483
8729
  schema: TextPropsSchema,
8484
- Component: (props) => /* @__PURE__ */ React63.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React63.createElement(TextEditor, __spreadValues({}, props)))
8730
+ Component: (props) => /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(TextEditor, __spreadValues({}, props)))
8485
8731
  },
8486
8732
  EmailLayout: {
8487
8733
  schema: email_layout_props_schema_default,
8488
- Component: (p) => /* @__PURE__ */ React63.createElement(EmailLayoutEditor, __spreadValues({}, p))
8734
+ Component: (p) => /* @__PURE__ */ React65.createElement(EmailLayoutEditor, __spreadValues({}, p))
8489
8735
  },
8490
8736
  Spacer: {
8491
8737
  schema: SpacerPropsSchema,
8492
- Component: (props) => /* @__PURE__ */ React63.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React63.createElement(spacer_default, __spreadValues({}, props)))
8738
+ Component: (props) => /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(spacer_default, __spreadValues({}, props)))
8493
8739
  },
8494
8740
  Divider: {
8495
8741
  schema: DividerPropsSchema,
8496
- Component: (props) => /* @__PURE__ */ React63.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React63.createElement(divider_default, __spreadValues({}, props)))
8742
+ Component: (props) => /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(divider_default, __spreadValues({}, props)))
8497
8743
  },
8498
8744
  Signature: {
8499
8745
  schema: SignaturePropsSchema,
8500
- Component: (props) => /* @__PURE__ */ React63.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React63.createElement(SignatureEditor, __spreadValues({}, props)))
8746
+ Component: (props) => /* @__PURE__ */ React65.createElement(EditorBlockWrapper, null, /* @__PURE__ */ React65.createElement(SignatureEditor, __spreadValues({}, props)))
8501
8747
  }
8502
8748
  });
8503
8749
  var EditorBlock2 = buildBlockComponent(EDITOR_DICTIONARY);
@@ -8513,7 +8759,7 @@ function EditorBlock({ id }) {
8513
8759
  if (!block) {
8514
8760
  throw new Error("Could not find block");
8515
8761
  }
8516
- return /* @__PURE__ */ React63.createElement(EditorBlockContext.Provider, { value: id }, /* @__PURE__ */ React63.createElement(EditorBlock2, __spreadValues({}, block)));
8762
+ return /* @__PURE__ */ React65.createElement(EditorBlockContext.Provider, { value: id }, /* @__PURE__ */ React65.createElement(EditorBlock2, __spreadValues({}, block)));
8517
8763
  }
8518
8764
  function ToggleInspectorPanelButton() {
8519
8765
  const inspectorDrawerOpen = useInspectorDrawerOpen();
@@ -8521,20 +8767,20 @@ function ToggleInspectorPanelButton() {
8521
8767
  toggleInspectorDrawerOpen();
8522
8768
  };
8523
8769
  if (inspectorDrawerOpen) {
8524
- return /* @__PURE__ */ React63.createElement(IconButton, { onClick: handleClick }, /* @__PURE__ */ React63.createElement(LastPageOutlined, { fontSize: "small" }));
8770
+ return /* @__PURE__ */ React65.createElement(IconButton, { onClick: handleClick }, /* @__PURE__ */ React65.createElement(LastPageOutlined, { fontSize: "small" }));
8525
8771
  }
8526
- return /* @__PURE__ */ React63.createElement(IconButton, { onClick: handleClick }, /* @__PURE__ */ React63.createElement(AppRegistrationOutlined, { fontSize: "small" }));
8772
+ return /* @__PURE__ */ React65.createElement(IconButton, { onClick: handleClick }, /* @__PURE__ */ React65.createElement(AppRegistrationOutlined, { fontSize: "small" }));
8527
8773
  }
8528
8774
  function useIcon() {
8529
8775
  const samplesDrawerOpen = useSamplesDrawerOpen();
8530
8776
  if (samplesDrawerOpen) {
8531
- return /* @__PURE__ */ React63.createElement(FirstPageOutlined, { fontSize: "small" });
8777
+ return /* @__PURE__ */ React65.createElement(FirstPageOutlined, { fontSize: "small" });
8532
8778
  }
8533
- return /* @__PURE__ */ React63.createElement(MenuOutlined, { fontSize: "small" });
8779
+ return /* @__PURE__ */ React65.createElement(MenuOutlined, { fontSize: "small" });
8534
8780
  }
8535
8781
  function ToggleSamplesPanelButton() {
8536
8782
  const icon = useIcon();
8537
- return /* @__PURE__ */ React63.createElement(IconButton, { onClick: toggleSamplesDrawerOpen }, icon);
8783
+ return /* @__PURE__ */ React65.createElement(IconButton, { onClick: toggleSamplesDrawerOpen }, icon);
8538
8784
  }
8539
8785
  function formatHtml(html2, spaces = 2) {
8540
8786
  try {
@@ -8596,7 +8842,7 @@ function HighlightedCodePanel({ type, value }) {
8596
8842
  if (code === null) {
8597
8843
  return null;
8598
8844
  }
8599
- return /* @__PURE__ */ React63.createElement(
8845
+ return /* @__PURE__ */ React65.createElement(
8600
8846
  "pre",
8601
8847
  {
8602
8848
  style: {
@@ -8622,17 +8868,17 @@ function HighlightedCodePanel({ type, value }) {
8622
8868
  function HtmlPanel() {
8623
8869
  const document2 = useDocument();
8624
8870
  const code = useMemo(() => renderToStaticMarkup(document2, { rootBlockId: "root" }), [document2]);
8625
- return /* @__PURE__ */ React63.createElement(HighlightedCodePanel, { type: "html", value: code });
8871
+ return /* @__PURE__ */ React65.createElement(HighlightedCodePanel, { type: "html", value: code });
8626
8872
  }
8627
8873
  function JsonPanel() {
8628
8874
  const document2 = useDocument();
8629
8875
  const code = useMemo(() => JSON.stringify(document2, null, " "), [document2]);
8630
- return /* @__PURE__ */ React63.createElement(HighlightedCodePanel, { type: "json", value: code });
8876
+ return /* @__PURE__ */ React65.createElement(HighlightedCodePanel, { type: "json", value: code });
8631
8877
  }
8632
8878
  function TextPanel() {
8633
8879
  const document2 = useDocument();
8634
8880
  const text = useMemo(() => renderToText(document2, { rootBlockId: "root" }), [document2]);
8635
- return /* @__PURE__ */ React63.createElement(
8881
+ return /* @__PURE__ */ React65.createElement(
8636
8882
  "pre",
8637
8883
  {
8638
8884
  style: {
@@ -8668,35 +8914,35 @@ function MainTabsGroup() {
8668
8914
  setSelectedMainTab("editor");
8669
8915
  }
8670
8916
  };
8671
- return /* @__PURE__ */ React63.createElement(Tabs, { value: selectedMainTab, onChange: handleChange }, /* @__PURE__ */ React63.createElement(
8917
+ return /* @__PURE__ */ React65.createElement(Tabs, { value: selectedMainTab, onChange: handleChange }, /* @__PURE__ */ React65.createElement(
8672
8918
  Tab,
8673
8919
  {
8674
8920
  value: "editor",
8675
- label: /* @__PURE__ */ React63.createElement(Tooltip, { title: t("tab.edit", "Edit") }, /* @__PURE__ */ React63.createElement(EditOutlined, { fontSize: "small" }))
8921
+ label: /* @__PURE__ */ React65.createElement(Tooltip, { title: t("tab.edit", "Edit") }, /* @__PURE__ */ React65.createElement(EditOutlined, { fontSize: "small" }))
8676
8922
  }
8677
- ), /* @__PURE__ */ React63.createElement(
8923
+ ), /* @__PURE__ */ React65.createElement(
8678
8924
  Tab,
8679
8925
  {
8680
8926
  value: "preview",
8681
- label: /* @__PURE__ */ React63.createElement(Tooltip, { title: t("tab.preview", "Preview") }, /* @__PURE__ */ React63.createElement(PreviewOutlined, { fontSize: "small" }))
8927
+ label: /* @__PURE__ */ React65.createElement(Tooltip, { title: t("tab.preview", "Preview") }, /* @__PURE__ */ React65.createElement(PreviewOutlined, { fontSize: "small" }))
8682
8928
  }
8683
- ), /* @__PURE__ */ React63.createElement(
8929
+ ), /* @__PURE__ */ React65.createElement(
8684
8930
  Tab,
8685
8931
  {
8686
8932
  value: "html",
8687
- label: /* @__PURE__ */ React63.createElement(Tooltip, { title: t("tab.html-output", "HTML output") }, /* @__PURE__ */ React63.createElement(CodeOutlined, { fontSize: "small" }))
8933
+ label: /* @__PURE__ */ React65.createElement(Tooltip, { title: t("tab.html-output", "HTML output") }, /* @__PURE__ */ React65.createElement(CodeOutlined, { fontSize: "small" }))
8688
8934
  }
8689
- ), /* @__PURE__ */ React63.createElement(
8935
+ ), /* @__PURE__ */ React65.createElement(
8690
8936
  Tab,
8691
8937
  {
8692
8938
  value: "text",
8693
- label: /* @__PURE__ */ React63.createElement(Tooltip, { title: t("tab.text-output", "Plain text output") }, /* @__PURE__ */ React63.createElement(SubjectOutlined, { fontSize: "small" }))
8939
+ label: /* @__PURE__ */ React65.createElement(Tooltip, { title: t("tab.text-output", "Plain text output") }, /* @__PURE__ */ React65.createElement(SubjectOutlined, { fontSize: "small" }))
8694
8940
  }
8695
- ), /* @__PURE__ */ React63.createElement(
8941
+ ), /* @__PURE__ */ React65.createElement(
8696
8942
  Tab,
8697
8943
  {
8698
8944
  value: "json",
8699
- label: /* @__PURE__ */ React63.createElement(Tooltip, { title: t("tab.json-output", "JSON output") }, /* @__PURE__ */ React63.createElement(DataObjectOutlined, { fontSize: "small" }))
8945
+ label: /* @__PURE__ */ React65.createElement(Tooltip, { title: t("tab.json-output", "JSON output") }, /* @__PURE__ */ React65.createElement(DataObjectOutlined, { fontSize: "small" }))
8700
8946
  }
8701
8947
  ));
8702
8948
  }
@@ -8751,7 +8997,7 @@ function SaveBar({ loadTemplates, saveAs }) {
8751
8997
  return false;
8752
8998
  }
8753
8999
  });
8754
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(
9000
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(
8755
9001
  Box,
8756
9002
  {
8757
9003
  sx: {
@@ -8764,7 +9010,7 @@ function SaveBar({ loadTemplates, saveAs }) {
8764
9010
  pb: 3
8765
9011
  }
8766
9012
  },
8767
- /* @__PURE__ */ React63.createElement(
9013
+ /* @__PURE__ */ React65.createElement(
8768
9014
  Box,
8769
9015
  {
8770
9016
  sx: {
@@ -8779,7 +9025,7 @@ function SaveBar({ loadTemplates, saveAs }) {
8779
9025
  boxShadow: "0 2px 6px rgba(33, 36, 67, 0.06), 0 16px 40px rgba(33, 36, 67, 0.14)"
8780
9026
  }
8781
9027
  },
8782
- hasOpenRow && currentTemplateName && /* @__PURE__ */ React63.createElement(
9028
+ hasOpenRow && currentTemplateName && /* @__PURE__ */ React65.createElement(
8783
9029
  Box,
8784
9030
  {
8785
9031
  sx: {
@@ -8795,25 +9041,25 @@ function SaveBar({ loadTemplates, saveAs }) {
8795
9041
  title: currentTemplateName
8796
9042
  },
8797
9043
  isSample ? `${t("savebar.sample-prefix", "Sample")} \xB7 ` : "",
8798
- /* @__PURE__ */ React63.createElement(Box, { component: "span", sx: { color: "text.primary", fontWeight: 600 } }, currentTemplateName)
9044
+ /* @__PURE__ */ React65.createElement(Box, { component: "span", sx: { color: "text.primary", fontWeight: 600 } }, currentTemplateName)
8799
9045
  ),
8800
- /* @__PURE__ */ React63.createElement(Tooltip, { title: hasOpenRow ? isSample ? t("savebar.save-changes-to-sample", "Save changes to this sample") : t("savebar.save-changes", "Save changes") : t("savebar.save-as-new-template", "Save as a new template") }, /* @__PURE__ */ React63.createElement(
9046
+ /* @__PURE__ */ React65.createElement(Tooltip, { title: hasOpenRow ? isSample ? t("savebar.save-changes-to-sample", "Save changes to this sample") : t("savebar.save-changes", "Save changes") : t("savebar.save-as-new-template", "Save as a new template") }, /* @__PURE__ */ React65.createElement(
8801
9047
  Button$1,
8802
9048
  {
8803
9049
  variant: "contained",
8804
9050
  size: "large",
8805
- startIcon: /* @__PURE__ */ React63.createElement(SaveOutlined, null),
9051
+ startIcon: /* @__PURE__ */ React65.createElement(SaveOutlined, null),
8806
9052
  onClick: handlePrimary,
8807
9053
  sx: { borderRadius: 999, textTransform: "none", px: 2.5, fontSize: 15, fontWeight: 600 }
8808
9054
  },
8809
9055
  primaryLabel
8810
9056
  )),
8811
- hasOpenRow && saveAs && /* @__PURE__ */ React63.createElement(Tooltip, { title: t("savebar.save-as-new-template", "Save as a new template") }, /* @__PURE__ */ React63.createElement(
9057
+ hasOpenRow && saveAs && /* @__PURE__ */ React65.createElement(Tooltip, { title: t("savebar.save-as-new-template", "Save as a new template") }, /* @__PURE__ */ React65.createElement(
8812
9058
  Button$1,
8813
9059
  {
8814
9060
  variant: "outlined",
8815
9061
  size: "large",
8816
- startIcon: /* @__PURE__ */ React63.createElement(SaveAsOutlined, null),
9062
+ startIcon: /* @__PURE__ */ React65.createElement(SaveAsOutlined, null),
8817
9063
  onClick: () => {
8818
9064
  setNameError(null);
8819
9065
  setDialogMode("save-as");
@@ -8822,12 +9068,12 @@ function SaveBar({ loadTemplates, saveAs }) {
8822
9068
  },
8823
9069
  t("savebar.save-as", "Save as\u2026")
8824
9070
  )),
8825
- saveAs && /* @__PURE__ */ React63.createElement(Tooltip, { title: t("savebar.start-fresh", "Start a fresh template") }, /* @__PURE__ */ React63.createElement(
9071
+ saveAs && /* @__PURE__ */ React65.createElement(Tooltip, { title: t("savebar.start-fresh", "Start a fresh template") }, /* @__PURE__ */ React65.createElement(
8826
9072
  Button$1,
8827
9073
  {
8828
9074
  variant: "text",
8829
9075
  size: "large",
8830
- startIcon: /* @__PURE__ */ React63.createElement(AddOutlined, null),
9076
+ startIcon: /* @__PURE__ */ React65.createElement(AddOutlined, null),
8831
9077
  onClick: () => {
8832
9078
  setNameError(null);
8833
9079
  setDialogMode("new-blank");
@@ -8837,7 +9083,7 @@ function SaveBar({ loadTemplates, saveAs }) {
8837
9083
  t("savebar.new", "New")
8838
9084
  ))
8839
9085
  )
8840
- ), /* @__PURE__ */ React63.createElement(
9086
+ ), /* @__PURE__ */ React65.createElement(
8841
9087
  SaveTemplateDialog,
8842
9088
  {
8843
9089
  open: dialogMode !== null,
@@ -8891,7 +9137,7 @@ function UndoRedoButtons() {
8891
9137
  window.addEventListener("keydown", onKeyDown);
8892
9138
  return () => window.removeEventListener("keydown", onKeyDown);
8893
9139
  }, [mac]);
8894
- return /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 0.5, alignItems: "center" }, /* @__PURE__ */ React63.createElement(Tooltip, { title: `${t("undo.tooltip", "Undo")} (${undoHint})` }, /* @__PURE__ */ React63.createElement("span", null, /* @__PURE__ */ React63.createElement(
9140
+ return /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 0.5, alignItems: "center" }, /* @__PURE__ */ React65.createElement(Tooltip, { title: `${t("undo.tooltip", "Undo")} (${undoHint})` }, /* @__PURE__ */ React65.createElement("span", null, /* @__PURE__ */ React65.createElement(
8895
9141
  IconButton,
8896
9142
  {
8897
9143
  size: "small",
@@ -8899,8 +9145,8 @@ function UndoRedoButtons() {
8899
9145
  disabled: !canUndo,
8900
9146
  "aria-label": t("undo.label", "Undo")
8901
9147
  },
8902
- /* @__PURE__ */ React63.createElement(UndoOutlined, { fontSize: "small" })
8903
- ))), /* @__PURE__ */ React63.createElement(Tooltip, { title: `${t("redo.tooltip", "Redo")} (${redoHint})` }, /* @__PURE__ */ React63.createElement("span", null, /* @__PURE__ */ React63.createElement(
9148
+ /* @__PURE__ */ React65.createElement(UndoOutlined, { fontSize: "small" })
9149
+ ))), /* @__PURE__ */ React65.createElement(Tooltip, { title: `${t("redo.tooltip", "Redo")} (${redoHint})` }, /* @__PURE__ */ React65.createElement("span", null, /* @__PURE__ */ React65.createElement(
8904
9150
  IconButton,
8905
9151
  {
8906
9152
  size: "small",
@@ -8908,7 +9154,7 @@ function UndoRedoButtons() {
8908
9154
  disabled: !canRedo,
8909
9155
  "aria-label": t("redo.label", "Redo")
8910
9156
  },
8911
- /* @__PURE__ */ React63.createElement(RedoOutlined, { fontSize: "small" })
9157
+ /* @__PURE__ */ React65.createElement(RedoOutlined, { fontSize: "small" })
8912
9158
  ))));
8913
9159
  }
8914
9160
  function SubjectInput() {
@@ -8934,7 +9180,7 @@ function SubjectInput() {
8934
9180
  selectionEnd: (_b = target.selectionEnd) != null ? _b : target.value.length
8935
9181
  });
8936
9182
  };
8937
- return /* @__PURE__ */ React63.createElement(
9183
+ return /* @__PURE__ */ React65.createElement(
8938
9184
  Box,
8939
9185
  {
8940
9186
  sx: {
@@ -8951,8 +9197,8 @@ function SubjectInput() {
8951
9197
  gap: 1.5
8952
9198
  }
8953
9199
  },
8954
- /* @__PURE__ */ React63.createElement(Box, { sx: { color: "text.secondary", fontSize: 13, fontWeight: 600, minWidth: 56 } }, t("subject.label", "Subject")),
8955
- /* @__PURE__ */ React63.createElement(
9200
+ /* @__PURE__ */ React65.createElement(Box, { sx: { color: "text.secondary", fontSize: 13, fontWeight: 600, minWidth: 56 } }, t("subject.label", "Subject")),
9201
+ /* @__PURE__ */ React65.createElement(
8956
9202
  InputBase,
8957
9203
  {
8958
9204
  fullWidth: true,
@@ -8978,7 +9224,7 @@ function SubjectPreview() {
8978
9224
  if (!subject) return null;
8979
9225
  const samples = buildSampleValueMap((_b = data.variables) != null ? _b : []);
8980
9226
  const rendered = substituteSampleValues(subject, samples);
8981
- return /* @__PURE__ */ React63.createElement(
9227
+ return /* @__PURE__ */ React65.createElement(
8982
9228
  Box,
8983
9229
  {
8984
9230
  sx: {
@@ -8995,8 +9241,8 @@ function SubjectPreview() {
8995
9241
  gap: 1.5
8996
9242
  }
8997
9243
  },
8998
- /* @__PURE__ */ React63.createElement(Box, { sx: { color: "text.secondary", fontSize: 13, fontWeight: 600, minWidth: 56 } }, t("subject.label", "Subject")),
8999
- /* @__PURE__ */ React63.createElement(Box, { sx: { fontSize: 14 } }, rendered)
9244
+ /* @__PURE__ */ React65.createElement(Box, { sx: { color: "text.secondary", fontSize: 13, fontWeight: 600, minWidth: 56 } }, t("subject.label", "Subject")),
9245
+ /* @__PURE__ */ React65.createElement(Box, { sx: { fontSize: 14 } }, rendered)
9000
9246
  );
9001
9247
  }
9002
9248
  function generateId3() {
@@ -9069,7 +9315,7 @@ function ImageDropPasteHandler({ enabled, children }) {
9069
9315
  window.addEventListener("paste", handlePaste);
9070
9316
  return () => window.removeEventListener("paste", handlePaste);
9071
9317
  }, [active, uploadImage]);
9072
- if (!active) return /* @__PURE__ */ React63.createElement(React63.Fragment, null, children);
9318
+ if (!active) return /* @__PURE__ */ React65.createElement(React65.Fragment, null, children);
9073
9319
  const onDragEnter = (e) => {
9074
9320
  var _a, _b;
9075
9321
  if (!Array.from((_b = (_a = e.dataTransfer) == null ? void 0 : _a.items) != null ? _b : []).some((i) => i.kind === "file")) return;
@@ -9102,7 +9348,7 @@ function ImageDropPasteHandler({ enabled, children }) {
9102
9348
  setUploading(false);
9103
9349
  }
9104
9350
  });
9105
- return /* @__PURE__ */ React63.createElement(
9351
+ return /* @__PURE__ */ React65.createElement(
9106
9352
  Box,
9107
9353
  {
9108
9354
  ref: wrapperRef,
@@ -9113,7 +9359,7 @@ function ImageDropPasteHandler({ enabled, children }) {
9113
9359
  sx: { position: "relative" }
9114
9360
  },
9115
9361
  children,
9116
- (dragging || uploading) && /* @__PURE__ */ React63.createElement(
9362
+ (dragging || uploading) && /* @__PURE__ */ React65.createElement(
9117
9363
  Box,
9118
9364
  {
9119
9365
  sx: {
@@ -9132,7 +9378,7 @@ function ImageDropPasteHandler({ enabled, children }) {
9132
9378
  zIndex: 10
9133
9379
  }
9134
9380
  },
9135
- /* @__PURE__ */ React63.createElement(Box, { sx: { display: "flex", alignItems: "center", gap: 1, fontWeight: 600, fontSize: 14 } }, /* @__PURE__ */ React63.createElement(CloudUploadOutlined, null), uploading ? "Uploading\u2026" : "Drop image to insert")
9381
+ /* @__PURE__ */ React65.createElement(Box, { sx: { display: "flex", alignItems: "center", gap: 1, fontWeight: 600, fontSize: 14 } }, /* @__PURE__ */ React65.createElement(CloudUploadOutlined, null), uploading ? "Uploading\u2026" : "Drop image to insert")
9136
9382
  )
9137
9383
  );
9138
9384
  }
@@ -9182,7 +9428,7 @@ function TemplatePanel2({ loadTemplates, saveAs, samplesDrawerEnabled = true })
9182
9428
  var _a;
9183
9429
  switch (selectedMainTab) {
9184
9430
  case "editor":
9185
- return /* @__PURE__ */ React63.createElement(Box, { sx: mainBoxSx }, /* @__PURE__ */ React63.createElement(EditorBlock, { id: "root" }));
9431
+ return /* @__PURE__ */ React65.createElement(Box, { sx: mainBoxSx }, /* @__PURE__ */ React65.createElement(EditorBlock, { id: "root" }));
9186
9432
  case "preview": {
9187
9433
  const rootBlock = document2.root;
9188
9434
  const layoutData = rootBlock && rootBlock.type === "EmailLayout" ? rootBlock.data : void 0;
@@ -9190,18 +9436,18 @@ function TemplatePanel2({ loadTemplates, saveAs, samplesDrawerEnabled = true })
9190
9436
  (_a = layoutData == null ? void 0 : layoutData.variables) != null ? _a : []
9191
9437
  );
9192
9438
  const previewDoc = applySampleValuesToDocument(document2, samples);
9193
- return /* @__PURE__ */ React63.createElement(Box, { sx: mainBoxSx }, /* @__PURE__ */ React63.createElement(Reader, { document: previewDoc, rootBlockId: "root" }));
9439
+ return /* @__PURE__ */ React65.createElement(Box, { sx: mainBoxSx }, /* @__PURE__ */ React65.createElement(Reader, { document: previewDoc, rootBlockId: "root" }));
9194
9440
  }
9195
9441
  case "html":
9196
- return /* @__PURE__ */ React63.createElement(HtmlPanel, null);
9442
+ return /* @__PURE__ */ React65.createElement(HtmlPanel, null);
9197
9443
  case "text":
9198
- return /* @__PURE__ */ React63.createElement(TextPanel, null);
9444
+ return /* @__PURE__ */ React65.createElement(TextPanel, null);
9199
9445
  case "json":
9200
- return /* @__PURE__ */ React63.createElement(JsonPanel, null);
9446
+ return /* @__PURE__ */ React65.createElement(JsonPanel, null);
9201
9447
  }
9202
9448
  };
9203
9449
  const showSaveButtons = persistenceEnabled;
9204
- return /* @__PURE__ */ React63.createElement(React63.Fragment, null, /* @__PURE__ */ React63.createElement(
9450
+ return /* @__PURE__ */ React65.createElement(React65.Fragment, null, /* @__PURE__ */ React65.createElement(
9205
9451
  Stack,
9206
9452
  {
9207
9453
  sx: {
@@ -9218,10 +9464,10 @@ function TemplatePanel2({ loadTemplates, saveAs, samplesDrawerEnabled = true })
9218
9464
  justifyContent: "space-between",
9219
9465
  alignItems: "center"
9220
9466
  },
9221
- samplesDrawerEnabled && /* @__PURE__ */ React63.createElement(ToggleSamplesPanelButton, null),
9222
- /* @__PURE__ */ React63.createElement(Stack, { px: 2, direction: "row", gap: 2, width: "100%", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 2 }, /* @__PURE__ */ React63.createElement(MainTabsGroup, null)), /* @__PURE__ */ React63.createElement(Stack, { direction: "row", spacing: 2, alignItems: "center" }, selectedMainTab === "editor" && /* @__PURE__ */ React63.createElement(UndoRedoButtons, null), /* @__PURE__ */ React63.createElement(ToggleButtonGroup, { value: selectedScreenSize, exclusive: true, size: "small", onChange: handleScreenSizeChange }, /* @__PURE__ */ React63.createElement(ToggleButton, { value: "desktop" }, /* @__PURE__ */ React63.createElement(Tooltip, { title: t("canvas.desktop-view", "Desktop view") }, /* @__PURE__ */ React63.createElement(MonitorOutlined, { fontSize: "small" }))), /* @__PURE__ */ React63.createElement(ToggleButton, { value: "mobile" }, /* @__PURE__ */ React63.createElement(Tooltip, { title: t("canvas.mobile-view", "Mobile view") }, /* @__PURE__ */ React63.createElement(PhoneIphoneOutlined, { fontSize: "small" })))), onTestSend && /* @__PURE__ */ React63.createElement(Tooltip, { title: t("canvas.send-test", "Send test") }, /* @__PURE__ */ React63.createElement(IconButton, { size: "small", onClick: handleTestSend }, /* @__PURE__ */ React63.createElement(SendOutlined, { fontSize: "small" }))))),
9223
- /* @__PURE__ */ React63.createElement(ToggleInspectorPanelButton, null)
9224
- ), selectedMainTab === "editor" && /* @__PURE__ */ React63.createElement(SubjectInput, null), selectedMainTab === "preview" && /* @__PURE__ */ React63.createElement(SubjectPreview, null), /* @__PURE__ */ React63.createElement(ImageDropPasteHandler, { enabled: selectedMainTab === "editor" }, /* @__PURE__ */ React63.createElement(
9467
+ samplesDrawerEnabled && /* @__PURE__ */ React65.createElement(ToggleSamplesPanelButton, null),
9468
+ /* @__PURE__ */ React65.createElement(Stack, { px: 2, direction: "row", gap: 2, width: "100%", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 2 }, /* @__PURE__ */ React65.createElement(MainTabsGroup, null)), /* @__PURE__ */ React65.createElement(Stack, { direction: "row", spacing: 2, alignItems: "center" }, selectedMainTab === "editor" && /* @__PURE__ */ React65.createElement(UndoRedoButtons, null), /* @__PURE__ */ React65.createElement(ToggleButtonGroup, { value: selectedScreenSize, exclusive: true, size: "small", onChange: handleScreenSizeChange }, /* @__PURE__ */ React65.createElement(ToggleButton, { value: "desktop" }, /* @__PURE__ */ React65.createElement(Tooltip, { title: t("canvas.desktop-view", "Desktop view") }, /* @__PURE__ */ React65.createElement(MonitorOutlined, { fontSize: "small" }))), /* @__PURE__ */ React65.createElement(ToggleButton, { value: "mobile" }, /* @__PURE__ */ React65.createElement(Tooltip, { title: t("canvas.mobile-view", "Mobile view") }, /* @__PURE__ */ React65.createElement(PhoneIphoneOutlined, { fontSize: "small" })))), onTestSend && /* @__PURE__ */ React65.createElement(Tooltip, { title: t("canvas.send-test", "Send test") }, /* @__PURE__ */ React65.createElement(IconButton, { size: "small", onClick: handleTestSend }, /* @__PURE__ */ React65.createElement(SendOutlined, { fontSize: "small" }))))),
9469
+ /* @__PURE__ */ React65.createElement(ToggleInspectorPanelButton, null)
9470
+ ), selectedMainTab === "editor" && /* @__PURE__ */ React65.createElement(SubjectInput, null), selectedMainTab === "preview" && /* @__PURE__ */ React65.createElement(SubjectPreview, null), /* @__PURE__ */ React65.createElement(ImageDropPasteHandler, { enabled: selectedMainTab === "editor" }, /* @__PURE__ */ React65.createElement(
9225
9471
  Box,
9226
9472
  {
9227
9473
  sx: {
@@ -9237,8 +9483,8 @@ function TemplatePanel2({ loadTemplates, saveAs, samplesDrawerEnabled = true })
9237
9483
  background: selectedMainTab === "editor" ? workspaceBackground === "checkerboard" ? WORKSPACE_CHECKERBOARD : WORKSPACE_SOLID : void 0
9238
9484
  }
9239
9485
  },
9240
- /* @__PURE__ */ React63.createElement(Box, { sx: { flexGrow: 1 } }, renderMainPanel()),
9241
- showSaveButtons && selectedMainTab === "editor" && /* @__PURE__ */ React63.createElement(SaveBar, { loadTemplates, saveAs })
9486
+ /* @__PURE__ */ React65.createElement(Box, { sx: { flexGrow: 1 } }, renderMainPanel()),
9487
+ showSaveButtons && selectedMainTab === "editor" && /* @__PURE__ */ React65.createElement(SaveBar, { loadTemplates, saveAs })
9242
9488
  )));
9243
9489
  }
9244
9490
 
@@ -9320,7 +9566,7 @@ var EmailEditorInternal = forwardRef((props, ref) => {
9320
9566
  return getDocument();
9321
9567
  }
9322
9568
  }));
9323
- return /* @__PURE__ */ React63.createElement(Stack, { position: "relative", id: "drawer-container", sx: { minHeight } }, /* @__PURE__ */ React63.createElement(
9569
+ return /* @__PURE__ */ React65.createElement(Stack, { position: "relative", id: "drawer-container", sx: { minHeight } }, /* @__PURE__ */ React65.createElement(
9324
9570
  InspectorDrawer,
9325
9571
  {
9326
9572
  enterDuration: drawerEnterDuration,
@@ -9329,7 +9575,7 @@ var EmailEditorInternal = forwardRef((props, ref) => {
9329
9575
  copyTemplate,
9330
9576
  renameTemplate
9331
9577
  }
9332
- ), /* @__PURE__ */ React63.createElement(
9578
+ ), /* @__PURE__ */ React65.createElement(
9333
9579
  SamplesDrawer,
9334
9580
  {
9335
9581
  enterDuration: drawerEnterDuration,
@@ -9345,7 +9591,7 @@ var EmailEditorInternal = forwardRef((props, ref) => {
9345
9591
  setTemplateKind,
9346
9592
  saveAs
9347
9593
  }
9348
- ), /* @__PURE__ */ React63.createElement(
9594
+ ), /* @__PURE__ */ React65.createElement(
9349
9595
  Stack,
9350
9596
  {
9351
9597
  sx: {
@@ -9354,7 +9600,7 @@ var EmailEditorInternal = forwardRef((props, ref) => {
9354
9600
  transition: [marginLeftTransition, marginRightTransition].join(", ")
9355
9601
  }
9356
9602
  },
9357
- /* @__PURE__ */ React63.createElement(TemplatePanel2, { loadTemplates, saveAs, samplesDrawerEnabled })
9603
+ /* @__PURE__ */ React65.createElement(TemplatePanel2, { loadTemplates, saveAs, samplesDrawerEnabled })
9358
9604
  ));
9359
9605
  });
9360
9606
  var EmailEditor = forwardRef((props, ref) => {
@@ -9407,7 +9653,7 @@ var EmailEditor = forwardRef((props, ref) => {
9407
9653
  () => ({ favoriteColors, customBlocks, onTestSend }),
9408
9654
  [favoriteColors, customBlocks, onTestSend]
9409
9655
  );
9410
- return /* @__PURE__ */ React63.createElement(I18nProvider, { i18n }, /* @__PURE__ */ React63.createElement(ThemeProvider, { theme: theme || theme_default }, /* @__PURE__ */ React63.createElement(CssBaseline, null), /* @__PURE__ */ React63.createElement("div", { style: { height: "100%", overflow: "auto" } }, /* @__PURE__ */ React63.createElement(SnackbarProvider, null, /* @__PURE__ */ React63.createElement(EditorConfigProvider, { config: editorConfig }, /* @__PURE__ */ React63.createElement(ImageCallbacksProvider, { callbacks: imageCallbacks }, /* @__PURE__ */ React63.createElement(
9656
+ return /* @__PURE__ */ React65.createElement(I18nProvider, { i18n }, /* @__PURE__ */ React65.createElement(ThemeProvider, { theme: theme || theme_default }, /* @__PURE__ */ React65.createElement(CssBaseline, null), /* @__PURE__ */ React65.createElement("div", { style: { height: "100%", overflow: "auto" } }, /* @__PURE__ */ React65.createElement(SnackbarProvider, null, /* @__PURE__ */ React65.createElement(EditorConfigProvider, { config: editorConfig }, /* @__PURE__ */ React65.createElement(ImageCallbacksProvider, { callbacks: imageCallbacks }, /* @__PURE__ */ React65.createElement(
9411
9657
  EmailEditorProvider,
9412
9658
  {
9413
9659
  initialTemplate: resolvedTemplate,
@@ -9416,7 +9662,7 @@ var EmailEditor = forwardRef((props, ref) => {
9416
9662
  onSave,
9417
9663
  onChange
9418
9664
  },
9419
- /* @__PURE__ */ React63.createElement(
9665
+ /* @__PURE__ */ React65.createElement(
9420
9666
  EmailEditorInternal,
9421
9667
  {
9422
9668
  ref,
@@ -9440,6 +9686,6 @@ var EmailEditor = forwardRef((props, ref) => {
9440
9686
  EmailEditor.displayName = "EmailEditor";
9441
9687
  EmailEditorInternal.displayName = "EmailEditorInternal";
9442
9688
 
9443
- export { avatar_default as Avatar, AvatarProps, AvatarPropsDefaults, AvatarPropsSchema, BlockConfiguration, button_default as Button, ButtonProps, ButtonPropsDefaults, ButtonPropsSchema, columns_container_default as ColumnsContainer, ColumnsContainerProps, ColumnsContainerPropsSchema, ColumnsContainerReader, container_default as Container, ContainerProps, ContainerPropsSchema, ContainerReader, divider_default as Divider, DividerProps, DividerPropsDefaults, DividerPropsSchema, DocumentBlocksDictionary, EmailEditor, EmailEditorProvider, EmailLayoutPropsSchema, EmailLayoutReader, EmailMarkdown, heading_default as Heading, HeadingProps, HeadingPropsDefaults, HeadingPropsSchema, html_default as Html, HtmlProps, HtmlPropsSchema, image_default as Image, ImageProps, ImagePropsSchema, Reader, ReaderBlock, ReaderBlockSchema, ReaderDocumentSchema, SUPPORTED_LOCALES, signature_default as Signature, SignatureProps, SignaturePropsDefaults, SignaturePropsSchema, spacer_default as Spacer, SpacerProps, SpacerPropsDefaults, SpacerPropsSchema, TemplateVariableSchema, Text, TextProps, TextPropsDefaults, TextPropsSchema, buildBlockComponent, buildBlockConfigurationDictionary, buildBlockConfigurationSchema, editorHandlebars, evaluateHandlebars, htmlToEditorConfig, renderToStaticMarkup, renderToText, theme_default as theme, useEmailEditor };
9689
+ export { avatar_default as Avatar, AvatarProps, AvatarPropsDefaults, AvatarPropsSchema, BlockConfiguration, button_default as Button, ButtonProps, ButtonPropsDefaults, ButtonPropsSchema, columns_container_default as ColumnsContainer, ColumnsContainerProps, ColumnsContainerPropsSchema, ColumnsContainerReader, container_default as Container, ContainerProps, ContainerPropsSchema, ContainerReader, divider_default as Divider, DividerProps, DividerPropsDefaults, DividerPropsSchema, DocumentBlocksDictionary, EmailEditor, EmailEditorProvider, EmailLayoutPropsSchema, EmailLayoutReader, EmailMarkdown, heading_default as Heading, HeadingProps, HeadingPropsDefaults, HeadingPropsSchema, html_default as Html, HtmlProps, HtmlPropsSchema, image_default as Image, ImageProps, ImagePropsSchema, otp_default as Otp, OtpProps, OtpPropsDefaults, OtpPropsSchema, Reader, ReaderBlock, ReaderBlockSchema, ReaderDocumentSchema, SUPPORTED_LOCALES, signature_default as Signature, SignatureProps, SignaturePropsDefaults, SignaturePropsSchema, spacer_default as Spacer, SpacerProps, SpacerPropsDefaults, SpacerPropsSchema, TemplateVariableSchema, Text, TextProps, TextPropsDefaults, TextPropsSchema, buildBlockComponent, buildBlockConfigurationDictionary, buildBlockConfigurationSchema, editorHandlebars, evaluateHandlebars, htmlToEditorConfig, renderToStaticMarkup, renderToText, theme_default as theme, useEmailEditor };
9444
9690
  //# sourceMappingURL=index.js.map
9445
9691
  //# sourceMappingURL=index.js.map