@trycourier/react-designer 0.0.0-canary-20250605142011 → 0.0.0-canary-20250626144519

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/channels.d.ts +7 -0
  2. package/dist/cjs/index.css +1 -1
  3. package/dist/cjs/index.css.map +2 -2
  4. package/dist/cjs/index.js +43 -43
  5. package/dist/cjs/index.js.map +4 -4
  6. package/dist/cjs/styles.css +35 -18
  7. package/dist/components/TemplateEditor/Channels/Email/Email.d.ts +48 -0
  8. package/dist/components/TemplateEditor/Channels/Email/EmailLayout.d.ts +9 -0
  9. package/dist/components/TemplateEditor/Channels/Email/SideBar/SideBar.d.ts +3 -3
  10. package/dist/components/TemplateEditor/Channels/Email/SideBar/SideBarItemDetails/SideBarItemDetails.d.ts +1 -2
  11. package/dist/components/TemplateEditor/Channels/Email/SideBar/index.d.ts +1 -0
  12. package/dist/components/TemplateEditor/Channels/Email/index.d.ts +1 -0
  13. package/dist/components/TemplateEditor/Channels/Inbox/Inbox.d.ts +22 -0
  14. package/dist/components/TemplateEditor/Channels/Inbox/InboxEditor.d.ts +4 -0
  15. package/dist/components/TemplateEditor/Channels/Inbox/InboxLayout.d.ts +4 -0
  16. package/dist/components/TemplateEditor/Channels/Inbox/index.d.ts +2 -0
  17. package/dist/components/TemplateEditor/Channels/Push/Push.d.ts +22 -0
  18. package/dist/components/TemplateEditor/Channels/Push/PushEditor.d.ts +6 -0
  19. package/dist/components/TemplateEditor/Channels/Push/PushLayout.d.ts +4 -0
  20. package/dist/components/TemplateEditor/Channels/Push/index.d.ts +2 -0
  21. package/dist/components/TemplateEditor/Channels/SMS/SMS.d.ts +22 -0
  22. package/dist/components/TemplateEditor/Channels/SMS/SMSEditor.d.ts +5 -0
  23. package/dist/components/TemplateEditor/Channels/SMS/SMSLayout.d.ts +4 -0
  24. package/dist/components/TemplateEditor/Channels/SMS/index.d.ts +2 -0
  25. package/dist/components/TemplateEditor/Channels/index.d.ts +1 -0
  26. package/dist/components/TemplateEditor/Channels/useChannels.d.ts +13 -0
  27. package/dist/components/TemplateEditor/Layout/Layout.d.ts +7 -0
  28. package/dist/components/TemplateEditor/Layout/index.d.ts +1 -0
  29. package/dist/components/TemplateEditor/index.d.ts +16 -0
  30. package/dist/components/extensions/Blockquote/Blockquote.test.d.ts +1 -0
  31. package/dist/components/extensions/Blockquote/Blockquote.types.d.ts +2 -2
  32. package/dist/components/extensions/Button/Button.test.d.ts +1 -0
  33. package/dist/components/extensions/Button/Button.types.d.ts +6 -6
  34. package/dist/components/extensions/ButtonRow/ButtonRow.d.ts +11 -0
  35. package/dist/components/extensions/ButtonRow/ButtonRow.test.d.ts +1 -0
  36. package/dist/components/extensions/ButtonRow/ButtonRow.types.d.ts +45 -0
  37. package/dist/components/extensions/ButtonRow/ButtonRowComponent.d.ts +5 -0
  38. package/dist/components/extensions/ButtonRow/index.d.ts +4 -0
  39. package/dist/components/extensions/Divider/Divider.test.d.ts +1 -0
  40. package/dist/components/extensions/DragPlaceholder/DragPlaceholder.test.d.ts +1 -0
  41. package/dist/components/extensions/FileHandler/FileHandler.test.d.ts +1 -0
  42. package/dist/components/extensions/Heading/Heading.test.d.ts +1 -0
  43. package/dist/components/extensions/Image/Image.test.d.ts +1 -0
  44. package/dist/components/extensions/ImageBlock/ImageBlock.test.d.ts +1 -0
  45. package/dist/components/extensions/Link/Link.test.d.ts +1 -0
  46. package/dist/components/extensions/Paragraph/Paragraph.test.d.ts +1 -0
  47. package/dist/components/extensions/Selection/Selection.test.d.ts +1 -0
  48. package/dist/components/extensions/TextBlock/TextBlock.test.d.ts +1 -0
  49. package/dist/components/extensions/TextBlock/TextBlock.types.d.ts +4 -4
  50. package/dist/components/extensions/UniqueId/UniqueId.test.d.ts +1 -0
  51. package/dist/components/extensions/Variable/Variable.test.d.ts +1 -0
  52. package/dist/components/extensions/index.d.ts +1 -0
  53. package/dist/components/ui-kit/Icon/InAppIcon.d.ts +3 -0
  54. package/dist/components/ui-kit/Icon/PushIcon.d.ts +3 -0
  55. package/dist/components/ui-kit/Icon/SMSIcon.d.ts +3 -0
  56. package/dist/components/ui-kit/Icon/index.d.ts +3 -0
  57. package/dist/esm/index.css +1 -1
  58. package/dist/esm/index.css.map +2 -2
  59. package/dist/esm/index.js +43 -43
  60. package/dist/esm/index.js.map +4 -4
  61. package/dist/esm/styles.css +35 -18
  62. package/dist/store.d.ts +4 -8
  63. package/dist/styles.css +35 -18
  64. package/package.json +2 -2
@@ -896,11 +896,11 @@ body {
896
896
  .courier-inset-0 {
897
897
  inset: 0px;
898
898
  }
899
- .-courier-left-\[10px\] {
900
- left: -10px;
899
+ .-courier-left-\[2px\] {
900
+ left: -2px;
901
901
  }
902
- .-courier-right-\[10px\] {
903
- right: -10px;
902
+ .-courier-right-\[2px\] {
903
+ right: -2px;
904
904
  }
905
905
  .courier-bottom-0 {
906
906
  bottom: 0px;
@@ -1195,6 +1195,9 @@ body {
1195
1195
  .courier-max-h-\[88px\] {
1196
1196
  max-height: 88px;
1197
1197
  }
1198
+ .courier-min-h-12 {
1199
+ min-height: 3rem;
1200
+ }
1198
1201
  .courier-min-h-\[1\.5rem\] {
1199
1202
  min-height: 1.5rem;
1200
1203
  }
@@ -1415,6 +1418,9 @@ body {
1415
1418
  .courier-items-center {
1416
1419
  align-items: center;
1417
1420
  }
1421
+ .courier-justify-start {
1422
+ justify-content: flex-start;
1423
+ }
1418
1424
  .courier-justify-end {
1419
1425
  justify-content: flex-end;
1420
1426
  }
@@ -1485,6 +1491,9 @@ body {
1485
1491
  .courier-rounded-3xl {
1486
1492
  border-radius: 1.5rem;
1487
1493
  }
1494
+ .courier-rounded-\[40px\] {
1495
+ border-radius: 40px;
1496
+ }
1488
1497
  .courier-rounded-full {
1489
1498
  border-radius: 9999px;
1490
1499
  }
@@ -1793,6 +1802,10 @@ body {
1793
1802
  .courier-p-\[3px\] {
1794
1803
  padding: 3px;
1795
1804
  }
1805
+ .\!courier-px-2 {
1806
+ padding-left: 0.5rem !important;
1807
+ padding-right: 0.5rem !important;
1808
+ }
1796
1809
  .\!courier-py-\[5px\] {
1797
1810
  padding-top: 5px !important;
1798
1811
  padding-bottom: 5px !important;
@@ -1873,12 +1886,6 @@ body {
1873
1886
  padding-top: 1px;
1874
1887
  padding-bottom: 1px;
1875
1888
  }
1876
- .\!courier-pl-2 {
1877
- padding-left: 0.5rem !important;
1878
- }
1879
- .\!courier-pr-2 {
1880
- padding-right: 0.5rem !important;
1881
- }
1882
1889
  .courier-pb-0 {
1883
1890
  padding-bottom: 0px;
1884
1891
  }
@@ -2207,7 +2214,7 @@ body {
2207
2214
  .touch-transparent {
2208
2215
  -webkit-tap-highlight-color: transparent;
2209
2216
  }
2210
- .courier-editor-preview-mode>div:first-child {
2217
+ .courier-editor-preview-mode.courier-main-content {
2211
2218
  flex-grow: 1;
2212
2219
  width: 100%;
2213
2220
  }
@@ -2394,19 +2401,19 @@ body {
2394
2401
  .courier-editor-preview-mode.courier-editor-preview-mode-mobile .courier-editor-main:hover >button {
2395
2402
  display: none;
2396
2403
  }
2397
- .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote * {
2404
+ .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-buttonRow * {
2398
2405
  pointer-events: none;
2399
2406
  }
2400
- .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote * {
2407
+ .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote *, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-buttonRow * {
2401
2408
  cursor: default;
2402
2409
  }
2403
- .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote [data-cypress="draggable-handle"] {
2410
+ .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-buttonRow [data-cypress="draggable-handle"] {
2404
2411
  display: none;
2405
2412
  }
2406
- .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:active [data-cypress="draggable-handle"] {
2413
+ .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-buttonRow:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror>.react-renderer.node-buttonRow:active [data-cypress="draggable-handle"] {
2407
2414
  display: none;
2408
2415
  }
2409
- .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:active .node-element.courier-empty-image::before {
2416
+ .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-button:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-divider:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-paragraph:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-heading:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-blockquote:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-buttonRow:hover .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-buttonRow:hover .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-buttonRow:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-buttonRow:active .node-element>div::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-buttonRow:active .node-element>hr::before, .courier-editor-preview-mode .ProseMirror>.react-renderer.node-buttonRow:active .node-element.courier-empty-image::before {
2410
2417
  display: none;
2411
2418
  }
2412
2419
  .courier-editor-preview-mode .ProseMirror>.react-renderer.node-imageBlock .courier-empty-image {
@@ -2591,13 +2598,23 @@ body {
2591
2598
  font-size: 0.875rem;
2592
2599
  line-height: 1.25rem;
2593
2600
  }
2601
+ .courier-inbox-editor .ProseMirror>.react-renderer.node-buttonRow {
2602
+ margin-top: 0.5rem;
2603
+ }
2604
+ /* Override the centering from SortableItemWrapper */
2605
+ .courier-inbox-editor .ProseMirror>.react-renderer.node-buttonRow .draggable-item {
2606
+ justify-content: flex-start !important;
2607
+ }
2608
+ .courier-inbox-editor .ProseMirror>.react-renderer.node-buttonRow [data-cypress="draggable-handle"] {
2609
+ display: none;
2610
+ }
2594
2611
  .courier-inbox-editor .ProseMirror>.react-renderer .draggable-item {
2595
2612
  padding: 0px;
2596
2613
  }
2597
- .courier-inbox-editor .ProseMirror>.react-renderer.node-paragraph .selected-element .node-element::before, .courier-inbox-editor .ProseMirror>.react-renderer.node-heading .selected-element .node-element::before {
2614
+ .courier-inbox-editor .ProseMirror>.react-renderer.node-paragraph .selected-element .node-element::before, .courier-inbox-editor .ProseMirror>.react-renderer.node-heading .selected-element .node-element::before, .courier-inbox-editor .ProseMirror>.react-renderer.node-buttonRow .selected-element .node-element::before {
2598
2615
  display: none;
2599
2616
  }
2600
- .courier-inbox-editor .ProseMirror>.react-renderer.node-paragraph .selected-element .courier-actions-panel, .courier-inbox-editor .ProseMirror>.react-renderer.node-heading .selected-element .courier-actions-panel {
2617
+ .courier-inbox-editor .ProseMirror>.react-renderer.node-paragraph .selected-element .courier-actions-panel, .courier-inbox-editor .ProseMirror>.react-renderer.node-heading .selected-element .courier-actions-panel, .courier-inbox-editor .ProseMirror>.react-renderer.node-buttonRow .selected-element .courier-actions-panel {
2601
2618
  display: none;
2602
2619
  }
2603
2620
  .courier-inbox-editor .ProseMirror>.react-renderer:hover [data-cypress="draggable-handle"] {
@@ -1,7 +1,55 @@
1
+ import type { TiptapDoc } from "@/lib/utils";
2
+ import type { ChannelType } from "@/store";
1
3
  import type { ElementalNode } from "@/types/elemental.types";
4
+ import type { UniqueIdentifier } from "@dnd-kit/core";
5
+ import type { SortingStrategy } from "@dnd-kit/sortable";
6
+ import type { Node } from "@tiptap/pm/model";
7
+ import type { Editor } from "@tiptap/react";
8
+ import type { MessageRouting, TenantData } from "../../../Providers/store";
2
9
  import type { TemplateEditorProps } from "../../TemplateEditor";
10
+ interface BrandSettingsData {
11
+ brandColor?: string;
12
+ textColor?: string;
13
+ subtleColor?: string;
14
+ headerStyle: "border" | "plain";
15
+ logo?: string;
16
+ link?: string;
17
+ facebookLink?: string;
18
+ linkedinLink?: string;
19
+ instagramLink?: string;
20
+ mediumLink?: string;
21
+ xLink?: string;
22
+ }
3
23
  export interface EmailProps extends Pick<TemplateEditorProps, "hidePublish" | "brandEditor" | "channels" | "variables" | "theme" | "routing"> {
4
24
  isLoading?: boolean;
25
+ headerRenderer?: ({ hidePublish, channels, routing, }: {
26
+ hidePublish?: boolean;
27
+ channels?: ChannelType[];
28
+ routing: MessageRouting;
29
+ }) => React.ReactNode;
30
+ render?: ({ subject, handleSubjectChange, selectedNode, setSelectedNode, previewMode, emailEditor, ref, isBrandApply, brandSettings, items, content, strategy, syncEditorItems, brandEditorContent, tenantData, togglePreviewMode, }: {
31
+ subject: string | null;
32
+ handleSubjectChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
33
+ selectedNode: Node | null;
34
+ setSelectedNode: (node: Node | null) => void;
35
+ previewMode: "desktop" | "mobile" | undefined;
36
+ emailEditor: Editor | null;
37
+ ref: React.RefObject<HTMLDivElement> | null;
38
+ isBrandApply: boolean;
39
+ brandSettings: BrandSettingsData | null;
40
+ items: Items;
41
+ content: TiptapDoc | null;
42
+ strategy: SortingStrategy;
43
+ syncEditorItems: (editor: Editor) => void;
44
+ brandEditorContent: string | null;
45
+ tenantData: TenantData | null;
46
+ togglePreviewMode: (mode: "desktop" | "mobile" | undefined) => void;
47
+ }) => React.ReactNode;
48
+ }
49
+ interface Items {
50
+ Editor: UniqueIdentifier[];
51
+ Sidebar: UniqueIdentifier[];
5
52
  }
6
53
  export declare const defaultEmailContent: ElementalNode[];
7
54
  export declare const Email: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<EmailProps & import("react").RefAttributes<HTMLDivElement>>>;
55
+ export {};
@@ -0,0 +1,9 @@
1
+ import { type HTMLAttributes } from "react";
2
+ import { type EmailProps } from "./Email";
3
+ export declare const EmailEditorContainer: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
4
+ export declare const EmailEditorMain: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
5
+ previewMode: "desktop" | "mobile" | undefined;
6
+ } & import("react").RefAttributes<HTMLDivElement>>;
7
+ export interface EmailLayoutProps extends EmailProps {
8
+ }
9
+ export declare const EmailLayout: ({ variables, theme, isLoading, hidePublish, channels, brandEditor, routing, }: EmailLayoutProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import type { UniqueIdentifier } from "@dnd-kit/core";
2
- interface SideBarProps {
2
+ export interface SideBarProps {
3
3
  items: UniqueIdentifier[];
4
4
  brandEditor?: boolean;
5
+ label?: string;
5
6
  }
6
- export declare const SideBar: ({ items, brandEditor }: SideBarProps) => import("react/jsx-runtime").JSX.Element;
7
- export {};
7
+ export declare const SideBar: ({ items, brandEditor, label }: SideBarProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,8 +1,7 @@
1
1
  import type { Node as ProseMirrorNode } from "@tiptap/pm/model";
2
2
  import type { Editor } from "@tiptap/react";
3
- interface SideBarItemDetailsProps {
3
+ export interface SideBarItemDetailsProps {
4
4
  element?: ProseMirrorNode;
5
5
  editor: Editor | null;
6
6
  }
7
7
  export declare const SideBarItemDetails: ({ element, editor }: SideBarItemDetailsProps) => import("react/jsx-runtime").JSX.Element | null;
8
- export {};
@@ -1 +1,2 @@
1
1
  export * from "./SideBar";
2
+ export * from "./SideBarItemDetails";
@@ -1 +1,2 @@
1
1
  export * from "./Email";
2
+ export * from "./EmailLayout";
@@ -1,7 +1,29 @@
1
+ import type { MessageRouting } from "@/components/Providers/store";
2
+ import type { TextMenuConfig } from "@/components/ui/TextMenu/config";
3
+ import type { TiptapDoc } from "@/lib/utils";
4
+ import type { ChannelType } from "@/store";
1
5
  import type { ElementalNode } from "@/types/elemental.types";
6
+ import type { AnyExtension, Editor } from "@tiptap/react";
2
7
  import type { TemplateEditorProps } from "../../TemplateEditor";
3
8
  export declare const defaultInboxContent: ElementalNode[];
9
+ export declare const InboxConfig: TextMenuConfig;
10
+ export declare const InboxEditorContent: () => null;
11
+ export interface InboxRenderProps {
12
+ content: TiptapDoc;
13
+ extensions: AnyExtension[];
14
+ editable: boolean;
15
+ autofocus: boolean;
16
+ onUpdate: ({ editor }: {
17
+ editor: Editor;
18
+ }) => void;
19
+ }
4
20
  export interface InboxProps extends Pick<TemplateEditorProps, "hidePublish" | "theme" | "variables" | "channels" | "routing"> {
5
21
  readOnly?: boolean;
22
+ headerRenderer?: ({ hidePublish, channels, routing, }: {
23
+ hidePublish?: boolean;
24
+ channels?: ChannelType[];
25
+ routing: MessageRouting;
26
+ }) => React.ReactNode;
27
+ render?: (props: InboxRenderProps) => React.ReactNode;
6
28
  }
7
29
  export declare const Inbox: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<InboxProps & import("react").RefAttributes<HTMLDivElement>>>;
@@ -0,0 +1,4 @@
1
+ import type { InboxRenderProps } from "./Inbox";
2
+ export interface InboxEditorProps extends InboxRenderProps {
3
+ }
4
+ export declare const InboxEditor: ({ content, extensions, editable, autofocus, onUpdate, }: InboxEditorProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import type { InboxProps } from "./Inbox";
2
+ export interface InboxLayoutProps extends InboxProps {
3
+ }
4
+ export declare const InboxLayout: ({ hidePublish, theme, variables, channels, routing, }: InboxLayoutProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1,3 @@
1
1
  export * from "./Inbox";
2
+ export * from "./InboxEditor";
3
+ export * from "./InboxLayout";
@@ -1,7 +1,29 @@
1
+ import type { MessageRouting } from "@/components/Providers/store";
2
+ import type { TextMenuConfig } from "@/components/ui/TextMenu/config";
3
+ import type { TiptapDoc } from "@/lib/utils";
4
+ import type { ChannelType } from "@/store";
1
5
  import type { ElementalNode } from "@/types/elemental.types";
6
+ import type { AnyExtension, Editor } from "@tiptap/react";
2
7
  import type { TemplateEditorProps } from "../../TemplateEditor";
8
+ export declare const PushEditorContent: () => null;
9
+ export interface PushRenderProps {
10
+ content: TiptapDoc;
11
+ extensions: AnyExtension[];
12
+ editable: boolean;
13
+ autofocus: boolean;
14
+ onUpdate: ({ editor }: {
15
+ editor: Editor;
16
+ }) => void;
17
+ }
3
18
  export interface PushProps extends Pick<TemplateEditorProps, "hidePublish" | "theme" | "variables" | "channels" | "routing"> {
4
19
  readOnly?: boolean;
20
+ headerRenderer?: ({ hidePublish, channels, routing, }: {
21
+ hidePublish?: boolean;
22
+ channels?: ChannelType[];
23
+ routing: MessageRouting;
24
+ }) => React.ReactNode;
25
+ render?: (props: PushRenderProps) => React.ReactNode;
5
26
  }
6
27
  export declare const defaultPushContent: ElementalNode[];
28
+ export declare const PushConfig: TextMenuConfig;
7
29
  export declare const Push: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<PushProps & import("react").RefAttributes<HTMLDivElement>>>;
@@ -0,0 +1,6 @@
1
+ import type { HTMLAttributes } from "react";
2
+ import { type PushRenderProps } from "./Push";
3
+ interface PushEditorProps extends PushRenderProps, Omit<HTMLAttributes<HTMLDivElement>, "content"> {
4
+ }
5
+ export declare const PushEditor: ({ content, extensions, editable, autofocus, onUpdate, className, }: PushEditorProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { PushProps } from "./Push";
2
+ export interface PushLayoutProps extends PushProps {
3
+ }
4
+ export declare const PushLayout: ({ hidePublish, theme, variables, channels, routing, }: PushLayoutProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1,3 @@
1
1
  export * from "./Push";
2
+ export * from "./PushEditor";
3
+ export * from "./PushLayout";
@@ -1,7 +1,29 @@
1
+ import type { TextMenuConfig } from "@/components/ui/TextMenu/config";
2
+ import type { TiptapDoc } from "@/lib/utils";
1
3
  import type { ElementalNode } from "@/types/elemental.types";
4
+ import type { AnyExtension, Editor } from "@tiptap/react";
5
+ import type { MessageRouting } from "../../../Providers/store";
6
+ import type { ChannelType } from "@/store";
2
7
  import type { TemplateEditorProps } from "../../TemplateEditor";
3
8
  export declare const defaultSMSContent: ElementalNode[];
9
+ export declare const SMSEditorContent: () => import("react/jsx-runtime").JSX.Element;
10
+ export interface SMSRenderProps {
11
+ content: TiptapDoc;
12
+ extensions: AnyExtension[];
13
+ editable: boolean;
14
+ autofocus: boolean;
15
+ onUpdate: ({ editor }: {
16
+ editor: Editor;
17
+ }) => void;
18
+ }
4
19
  export interface SMSProps extends Pick<TemplateEditorProps, "hidePublish" | "theme" | "variables" | "channels" | "routing"> {
5
20
  readOnly?: boolean;
21
+ headerRenderer?: ({ hidePublish, channels, routing, }: {
22
+ hidePublish?: boolean;
23
+ channels?: ChannelType[];
24
+ routing: MessageRouting;
25
+ }) => React.ReactNode;
26
+ render?: (props: SMSRenderProps) => React.ReactNode;
6
27
  }
28
+ export declare const SMSConfig: TextMenuConfig;
7
29
  export declare const SMS: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<SMSProps & import("react").RefAttributes<HTMLDivElement>>>;
@@ -0,0 +1,5 @@
1
+ import type { HTMLAttributes } from "react";
2
+ import type { SMSRenderProps } from "./SMS";
3
+ export interface SMSEditorProps extends SMSRenderProps, Omit<HTMLAttributes<HTMLDivElement>, "content"> {
4
+ }
5
+ export declare const SMSEditor: ({ content, extensions, editable, autofocus, onUpdate, className, }: SMSEditorProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import type { SMSProps } from "./SMS";
2
+ export interface SMSLayoutProps extends SMSProps {
3
+ }
4
+ export declare const SMSLayout: ({ hidePublish, theme, variables, channels, routing }: SMSLayoutProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1,3 @@
1
1
  export * from "./SMS";
2
+ export * from "./SMSEditor";
3
+ export * from "./SMSLayout";
@@ -3,3 +3,4 @@ export * from "./Email";
3
3
  export * from "./Inbox";
4
4
  export * from "./Push";
5
5
  export * from "./SMS";
6
+ export * from "./useChannels";
@@ -0,0 +1,13 @@
1
+ import { type Channel, type ChannelType } from "@/store";
2
+ import type { TemplateEditorProps } from "../TemplateEditor";
3
+ export declare const useChannels: ({ channels, routing, }: {
4
+ channels?: ChannelType[];
5
+ routing?: TemplateEditorProps["routing"];
6
+ }) => {
7
+ enabledChannels: Channel[];
8
+ disabledChannels: Channel[];
9
+ channel: ChannelType;
10
+ setChannel: (channelType: ChannelType) => void;
11
+ addChannel: (channelType: ChannelType) => void;
12
+ removeChannel: (channelToRemove: ChannelType) => Promise<void>;
13
+ };
@@ -0,0 +1,7 @@
1
+ import { type HTMLAttributes } from "react";
2
+ export declare const ChannelRootContainer: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
3
+ previewMode: "desktop" | "mobile" | undefined;
4
+ } & import("react").RefAttributes<HTMLDivElement>>;
5
+ export declare const EditorSidebar: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
6
+ previewMode: "desktop" | "mobile" | undefined;
7
+ } & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export * from "./Layout";
@@ -1 +1,17 @@
1
+ export { BrandFooter } from "@/components/BrandEditor/Editor/BrandFooter";
2
+ export { PreviewPanel } from "@/components/ui/PreviewPanel";
3
+ export { TextMenu } from "@/components/ui/TextMenu";
4
+ export { cn } from "@/lib/utils";
5
+ export { SortableContext } from "@dnd-kit/sortable";
6
+ export { useChannels } from "./Channels";
7
+ export { default as EmailEditor } from "./Channels/Email/EmailEditor";
1
8
  export * from "./TemplateEditor";
9
+ export { SideBar as EmailSideBar, SideBarItemDetails as EmailSideBarItemDetails, } from "./Channels/Email/SideBar";
10
+ export { SideBar as InboxSideBar } from "./Channels/Inbox/SideBar";
11
+ export declare const EmailChannel: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<import("./Channels").EmailProps & import("react").RefAttributes<HTMLDivElement>>>;
12
+ export declare const SMSChannel: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<import("./Channels").SMSProps & import("react").RefAttributes<HTMLDivElement>>>;
13
+ export declare const PushChannel: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<import("./Channels").PushProps & import("react").RefAttributes<HTMLDivElement>>>;
14
+ export declare const InboxChannel: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<import("./Channels").InboxProps & import("react").RefAttributes<HTMLDivElement>>>;
15
+ export { EmailEditorContainer, EmailEditorMain } from "./Channels/Email";
16
+ export { ChannelRootContainer, EditorSidebar } from "./Layout";
17
+ export { InboxEditor, PushEditor, SMSEditor } from "./Channels";
@@ -7,17 +7,17 @@ export declare const blockquoteSchema: z.ZodObject<{
7
7
  borderColor: z.ZodString;
8
8
  id: z.ZodOptional<z.ZodString>;
9
9
  }, "strip", z.ZodTypeAny, {
10
+ backgroundColor: string;
10
11
  paddingVertical: number;
11
12
  paddingHorizontal: number;
12
13
  borderColor: string;
13
- backgroundColor: string;
14
14
  borderLeftWidth: number;
15
15
  id?: string | undefined;
16
16
  }, {
17
+ backgroundColor: string;
17
18
  paddingVertical: number;
18
19
  paddingHorizontal: number;
19
20
  borderColor: string;
20
- backgroundColor: string;
21
21
  borderLeftWidth: number;
22
22
  id?: string | undefined;
23
23
  }>;
@@ -0,0 +1 @@
1
+ export {};
@@ -17,12 +17,12 @@ export declare const buttonSchema: z.ZodObject<{
17
17
  }, "strip", z.ZodTypeAny, {
18
18
  padding: number;
19
19
  borderWidth: number;
20
+ label: string;
21
+ backgroundColor: string;
22
+ textColor: string;
20
23
  borderColor: string;
21
24
  size: "full" | "default";
22
25
  borderRadius: number;
23
- textColor: string;
24
- backgroundColor: string;
25
- label: string;
26
26
  alignment: "left" | "center" | "right";
27
27
  fontStyle: "italic" | "normal";
28
28
  fontWeight: "bold" | "normal";
@@ -32,12 +32,12 @@ export declare const buttonSchema: z.ZodObject<{
32
32
  }, {
33
33
  padding: number;
34
34
  borderWidth: number;
35
+ label: string;
36
+ backgroundColor: string;
37
+ textColor: string;
35
38
  borderColor: string;
36
39
  size: "full" | "default";
37
40
  borderRadius: number;
38
- textColor: string;
39
- backgroundColor: string;
40
- label: string;
41
41
  alignment: "left" | "center" | "right";
42
42
  fontStyle: "italic" | "normal";
43
43
  fontWeight: "bold" | "normal";
@@ -0,0 +1,11 @@
1
+ import { Node } from "@tiptap/core";
2
+ import type { ButtonRowProps } from "./ButtonRow.types";
3
+ declare module "@tiptap/core" {
4
+ interface Commands<ReturnType> {
5
+ buttonRow: {
6
+ setButtonRow: (props: Partial<ButtonRowProps>) => ReturnType;
7
+ };
8
+ }
9
+ }
10
+ export declare const defaultButtonRowProps: ButtonRowProps;
11
+ export declare const ButtonRow: Node<any, any>;
@@ -0,0 +1,45 @@
1
+ import { z } from "zod";
2
+ export interface ButtonRowProps {
3
+ id?: string;
4
+ button1Label: string;
5
+ button1Link: string;
6
+ button1BackgroundColor: string;
7
+ button1TextColor: string;
8
+ button2Label: string;
9
+ button2Link: string;
10
+ button2BackgroundColor: string;
11
+ button2TextColor: string;
12
+ padding?: number;
13
+ }
14
+ export declare const buttonRowSchema: z.ZodObject<{
15
+ button1Label: z.ZodString;
16
+ button1Link: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
17
+ button1BackgroundColor: z.ZodOptional<z.ZodString>;
18
+ button1TextColor: z.ZodOptional<z.ZodString>;
19
+ button2Label: z.ZodString;
20
+ button2Link: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
21
+ button2BackgroundColor: z.ZodOptional<z.ZodString>;
22
+ button2TextColor: z.ZodOptional<z.ZodString>;
23
+ padding: z.ZodOptional<z.ZodNumber>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ button1Label: string;
26
+ button2Label: string;
27
+ padding?: number | undefined;
28
+ button1Link?: string | undefined;
29
+ button1BackgroundColor?: string | undefined;
30
+ button1TextColor?: string | undefined;
31
+ button2Link?: string | undefined;
32
+ button2BackgroundColor?: string | undefined;
33
+ button2TextColor?: string | undefined;
34
+ }, {
35
+ button1Label: string;
36
+ button2Label: string;
37
+ padding?: number | undefined;
38
+ button1Link?: string | undefined;
39
+ button1BackgroundColor?: string | undefined;
40
+ button1TextColor?: string | undefined;
41
+ button2Link?: string | undefined;
42
+ button2BackgroundColor?: string | undefined;
43
+ button2TextColor?: string | undefined;
44
+ }>;
45
+ export type ButtonRowFormData = z.infer<typeof buttonRowSchema>;
@@ -0,0 +1,5 @@
1
+ import { type NodeViewProps } from "@tiptap/react";
2
+ import React from "react";
3
+ import type { ButtonRowProps } from "./ButtonRow.types";
4
+ export declare const ButtonRowComponent: React.FC<ButtonRowProps>;
5
+ export declare const ButtonRowComponentNode: (props: NodeViewProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export { ButtonRow, defaultButtonRowProps } from "./ButtonRow";
2
+ export { ButtonRowComponent, ButtonRowComponentNode } from "./ButtonRowComponent";
3
+ export type { ButtonRowProps, ButtonRowFormData } from "./ButtonRow.types";
4
+ export { buttonRowSchema } from "./ButtonRow.types";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import "@testing-library/jest-dom/vitest";