@trycourier/react-designer 0.5.1 → 0.6.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.
Files changed (49) hide show
  1. package/README.md +70 -0
  2. package/dist/cjs/index.js +66 -59
  3. package/dist/cjs/index.js.map +4 -4
  4. package/dist/cjs/styles.css +105 -36
  5. package/dist/components/Providers/TemplateProvider.d.ts +2 -0
  6. package/dist/components/TemplateEditor/Channels/Email/EmailEditor.d.ts +3 -1
  7. package/dist/components/TemplateEditor/Channels/Inbox/InboxEditor.d.ts +3 -1
  8. package/dist/components/TemplateEditor/Channels/MSTeams/MSTeams.d.ts +6 -1
  9. package/dist/components/TemplateEditor/Channels/MSTeams/MSTeamsEditor.d.ts +3 -1
  10. package/dist/components/TemplateEditor/Channels/MSTeams/SideBar/MSTeamsSideBarItemDetails.d.ts +8 -0
  11. package/dist/components/TemplateEditor/Channels/MSTeams/SideBar/index.d.ts +1 -0
  12. package/dist/components/TemplateEditor/Channels/MSTeams/index.d.ts +1 -1
  13. package/dist/components/TemplateEditor/Channels/Push/PushEditor.d.ts +3 -1
  14. package/dist/components/TemplateEditor/Channels/SMS/SMSEditor.d.ts +3 -1
  15. package/dist/components/TemplateEditor/Channels/Slack/Slack.d.ts +6 -1
  16. package/dist/components/TemplateEditor/Channels/Slack/SlackEditor.d.ts +3 -1
  17. package/dist/components/TemplateEditor/VariableViewModeSync.d.ts +24 -0
  18. package/dist/components/TemplateEditor/index.d.ts +1 -1
  19. package/dist/components/TemplateEditor/store.d.ts +16 -1
  20. package/dist/components/extensions/Button/Button.d.ts +0 -3
  21. package/dist/components/extensions/Button/ButtonComponent.d.ts +2 -3
  22. package/dist/components/extensions/Button/buttonUtils.d.ts +13 -0
  23. package/dist/components/extensions/HardBreak/HardBreak.d.ts +12 -0
  24. package/dist/components/extensions/HardBreak/index.d.ts +1 -0
  25. package/dist/components/extensions/List/List.d.ts +0 -1
  26. package/dist/components/extensions/List/List.types.d.ts +0 -10
  27. package/dist/components/extensions/List/ListForm.d.ts +6 -1
  28. package/dist/components/extensions/Variable/index.d.ts +2 -0
  29. package/dist/components/extensions/Variable/variable-storage.types.d.ts +26 -0
  30. package/dist/components/extensions/Variable/variable-storage.utils.d.ts +72 -0
  31. package/dist/components/extensions/extension-kit.d.ts +17 -0
  32. package/dist/components/extensions/index.d.ts +1 -1
  33. package/dist/components/ui/TextMenu/hooks/useTextmenuCommands.d.ts +0 -1
  34. package/dist/components/ui-kit/Button/Button.d.ts +1 -1
  35. package/dist/components/ui-kit/Toggle/Toggle.d.ts +2 -2
  36. package/dist/components/ui-kit/ToggleGroup/ToggleGroup.d.ts +2 -2
  37. package/dist/components/utils/shadowDomDndFix.d.ts +47 -0
  38. package/dist/esm/index.js +66 -59
  39. package/dist/esm/index.js.map +4 -4
  40. package/dist/esm/styles.css +105 -36
  41. package/dist/hooks/useAutoSave.d.ts +1 -0
  42. package/dist/index.d.ts +1 -0
  43. package/dist/lib/testHelpers.d.ts +21 -1
  44. package/dist/lib/utils/convertElementalToTiptap/convertElementalToTiptap.d.ts +6 -1
  45. package/dist/lib/utils/getTitle/index.d.ts +1 -1
  46. package/dist/lib/utils/getTitle/preserveStorageFormat.d.ts +7 -0
  47. package/dist/styles.css +105 -36
  48. package/dist/types/elemental.types.d.ts +0 -4
  49. package/package.json +6 -1
package/dist/styles.css CHANGED
@@ -447,6 +447,23 @@
447
447
  .ProseMirror .ProseMirror-gapcursor + .node-blockquote:hover:is(.courier-dark *) {
448
448
  outline-color: #a3a3a3;
449
449
  }
450
+ /* Hard break wrapper for cursor positioning */
451
+ .ProseMirror .hard-break-wrapper {
452
+ display: inline;
453
+ white-space: pre;
454
+ }
455
+ /* Ensure cursor is visible before inline nodes after line breaks */
456
+ .ProseMirror .hard-break-wrapper + [data-node-view-wrapper] {
457
+ display: inline;
458
+ }
459
+ /* Custom cursor indicator for positions where browser can't render native cursor */
460
+ .ProseMirror .variable-cursor-indicator {
461
+ pointer-events: none;
462
+ }
463
+ @keyframes cursor-blink {
464
+ 0%, 100% { opacity: 1; }
465
+ 50% { opacity: 0; }
466
+ }
450
467
  *, ::before, ::after {
451
468
  --tw-border-spacing-x: 0;
452
469
  --tw-border-spacing-y: 0;
@@ -1000,15 +1017,18 @@ body {
1000
1017
  .courier-z-50 {
1001
1018
  z-index: 50;
1002
1019
  }
1020
+ .courier-z-\[40\] {
1021
+ z-index: 40;
1022
+ }
1023
+ .courier-z-\[50\] {
1024
+ z-index: 50;
1025
+ }
1003
1026
  .courier-z-\[9999\] {
1004
1027
  z-index: 9999;
1005
1028
  }
1006
1029
  .courier-z-\[999\] {
1007
1030
  z-index: 999;
1008
1031
  }
1009
- .courier-z-\[9\] {
1010
- z-index: 9;
1011
- }
1012
1032
  .\!courier-m-0 {
1013
1033
  margin: 0px !important;
1014
1034
  }
@@ -1033,6 +1053,10 @@ body {
1033
1053
  margin-left: -1rem;
1034
1054
  margin-right: -1rem;
1035
1055
  }
1056
+ .courier-mx-0 {
1057
+ margin-left: 0px;
1058
+ margin-right: 0px;
1059
+ }
1036
1060
  .courier-mx-1 {
1037
1061
  margin-left: 0.25rem;
1038
1062
  margin-right: 0.25rem;
@@ -1049,10 +1073,6 @@ body {
1049
1073
  margin-left: auto;
1050
1074
  margin-right: auto;
1051
1075
  }
1052
- .courier-my-0 {
1053
- margin-top: 0px;
1054
- margin-bottom: 0px;
1055
- }
1056
1076
  .courier-my-1 {
1057
1077
  margin-top: 0.25rem;
1058
1078
  margin-bottom: 0.25rem;
@@ -1252,9 +1272,6 @@ body {
1252
1272
  .courier-h-\[25px\] {
1253
1273
  height: 25px;
1254
1274
  }
1255
- .courier-h-\[28px\] {
1256
- height: 28px;
1257
- }
1258
1275
  .courier-h-\[48px\] {
1259
1276
  height: 48px;
1260
1277
  }
@@ -1372,8 +1389,8 @@ body {
1372
1389
  .courier-w-\[360px\] {
1373
1390
  width: 360px;
1374
1391
  }
1375
- .courier-w-\[80vw\] {
1376
- width: 80vw;
1392
+ .courier-w-\[85\%\] {
1393
+ width: 85%;
1377
1394
  }
1378
1395
  .courier-w-auto {
1379
1396
  width: auto;
@@ -1536,6 +1553,9 @@ body {
1536
1553
  .courier-flex-wrap {
1537
1554
  flex-wrap: wrap;
1538
1555
  }
1556
+ .courier-flex-nowrap {
1557
+ flex-wrap: nowrap;
1558
+ }
1539
1559
  .courier-content-center {
1540
1560
  align-content: center;
1541
1561
  }
@@ -1609,9 +1629,15 @@ body {
1609
1629
  .courier-overflow-hidden {
1610
1630
  overflow: hidden;
1611
1631
  }
1632
+ .courier-overflow-x-auto {
1633
+ overflow-x: auto;
1634
+ }
1612
1635
  .courier-overflow-y-auto {
1613
1636
  overflow-y: auto;
1614
1637
  }
1638
+ .courier-overflow-y-clip {
1639
+ overflow-y: clip;
1640
+ }
1615
1641
  .courier-truncate {
1616
1642
  overflow: hidden;
1617
1643
  text-overflow: ellipsis;
@@ -1620,6 +1646,9 @@ body {
1620
1646
  .courier-text-ellipsis {
1621
1647
  text-overflow: ellipsis;
1622
1648
  }
1649
+ .\!courier-whitespace-nowrap {
1650
+ white-space: nowrap !important;
1651
+ }
1623
1652
  .courier-whitespace-nowrap {
1624
1653
  white-space: nowrap;
1625
1654
  }
@@ -2226,9 +2255,6 @@ body {
2226
2255
  .courier-uppercase {
2227
2256
  text-transform: uppercase;
2228
2257
  }
2229
- .courier-leading-\[28px\] {
2230
- line-height: 28px;
2231
- }
2232
2258
  .courier-leading-none {
2233
2259
  line-height: 1;
2234
2260
  }
@@ -2266,6 +2292,10 @@ body {
2266
2292
  .courier-text-accent-foreground {
2267
2293
  color: var(--accent-foreground);
2268
2294
  }
2295
+ .courier-text-black {
2296
+ --tw-text-opacity: 1;
2297
+ color: rgb(0 0 0 / var(--tw-text-opacity, 1));
2298
+ }
2269
2299
  .courier-text-blue-700 {
2270
2300
  --tw-text-opacity: 1;
2271
2301
  color: rgb(29 78 216 / var(--tw-text-opacity, 1));
@@ -2342,6 +2372,9 @@ body {
2342
2372
  .courier-underline {
2343
2373
  text-decoration-line: underline;
2344
2374
  }
2375
+ .courier-no-underline {
2376
+ text-decoration-line: none;
2377
+ }
2345
2378
  .courier-antialiased {
2346
2379
  -webkit-font-smoothing: antialiased;
2347
2380
  -moz-osx-font-smoothing: grayscale;
@@ -2754,6 +2787,19 @@ body {
2754
2787
  .courier-editor-preview-mode .ProseMirror, .courier-editor-readonly .ProseMirror {
2755
2788
  pointer-events: none;
2756
2789
  }
2790
+ /* Re-enable pointer events for clickable elements in preview mode */
2791
+ .courier-editor-preview-mode .ProseMirror a.link, .courier-editor-readonly .ProseMirror a.link {
2792
+ pointer-events: auto !important;
2793
+ cursor: pointer !important;
2794
+ }
2795
+ /* Button link wrapper in preview mode */
2796
+ .courier-editor-preview-mode .ProseMirror a.button-link-wrapper, .courier-editor-readonly .ProseMirror a.button-link-wrapper {
2797
+ pointer-events: auto !important;
2798
+ cursor: pointer !important;
2799
+ text-decoration: none;
2800
+ color: inherit;
2801
+ display: block;
2802
+ }
2757
2803
  .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-list *, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-buttonRow *, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column *, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode *, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock *, .courier-editor-readonly .ProseMirror > .react-renderer.node-button *, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider *, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph *, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading *, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote *, .courier-editor-readonly .ProseMirror > .react-renderer.node-list *, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow *, .courier-editor-readonly .ProseMirror > .react-renderer.node-column *, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode * {
2758
2804
  pointer-events: none;
2759
2805
  }
@@ -2772,7 +2818,10 @@ body {
2772
2818
  .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-list:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list: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"], .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:active [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:hover [data-cypress="draggable-handle"], .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:active [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:hover [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:active [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-button:hover [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-button:active [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:hover [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:active [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:hover [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:active [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:hover [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:active [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:hover [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:active [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-list:hover [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-list:active [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:hover [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:active [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-column:hover [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-column:active [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:hover [data-cypress="draggable-handle"], .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:active [data-cypress="draggable-handle"] {
2773
2819
  display: none;
2774
2820
  }
2775
- .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-list:hover .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:hover .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:active .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:active .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list: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, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:hover .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:hover .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:active .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:active .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:hover .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:hover .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:active .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:active .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:active .node-element.courier-empty-image::before {
2821
+ .courier-editor-preview-mode .ProseMirror > .react-renderer.node-imageBlock:hover .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-imageBlock:active .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-button:hover .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-button:active .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-divider:hover .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-divider:active .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-paragraph:hover .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-paragraph:active .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-heading:hover .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-heading:active .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-blockquote:hover .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-blockquote:active .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:hover .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:active .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-buttonRow:hover .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-buttonRow:active .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:hover .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:active .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:hover .node-element::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:active .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:hover .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:active .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:hover .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:active .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:hover .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:active .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:hover .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:active .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:hover .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:active .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:hover .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:active .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:hover .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:active .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:hover .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:active .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:hover .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:active .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:hover .node-element::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:active .node-element::before {
2822
+ display: none;
2823
+ }
2824
+ .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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-imageBlock:hover .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-imageBlock:active .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-button:hover .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-button:active .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-divider:hover .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-divider:active .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-paragraph:hover .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-paragraph:active .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-heading:hover .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-heading:active .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-blockquote:hover .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-blockquote:active .node-element > ol::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-list:hover .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:hover .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:hover .node-element > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:hover .node-element > ol::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:active .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:active .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:active .node-element > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list:active .node-element > ol::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-list: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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-buttonRow:hover .node-element > ol::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 > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-buttonRow:active .node-element > ol::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-buttonRow:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:hover .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:hover .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:hover .node-element > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:hover .node-element > ol::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:active .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:active .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:active .node-element > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:active .node-element > ol::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column:active .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:hover .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:hover .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:hover .node-element > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:hover .node-element > ol::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:hover .node-element.courier-empty-image::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:active .node-element > div::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:active .node-element > hr::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:active .node-element > ul::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:active .node-element > ol::before, .courier-editor-preview-mode .ProseMirror > .react-renderer.node-customCode:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:hover .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:hover .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:active .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:active .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-imageBlock:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:hover .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:hover .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:active .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:active .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-button:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:hover .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:hover .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:active .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:active .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-divider:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:hover .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:hover .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:active .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:active .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-paragraph:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:hover .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:hover .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:active .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:active .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-heading:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:hover .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:hover .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:active .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:active .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-blockquote:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:hover .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:hover .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:active .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:active .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-list:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:hover .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:hover .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:active .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:active .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-buttonRow:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:hover .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:hover .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:active .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:active .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-column:active .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:hover .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:hover .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:hover .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:hover .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:hover .node-element.courier-empty-image::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:active .node-element > div::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:active .node-element > hr::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:active .node-element > ul::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:active .node-element > ol::before, .courier-editor-readonly .ProseMirror > .react-renderer.node-customCode:active .node-element.courier-empty-image::before {
2776
2825
  display: none;
2777
2826
  }
2778
2827
  .courier-editor-preview-mode .ProseMirror > .react-renderer.node-column .draggable-content-wrapper > .node-element > div, .courier-editor-readonly .ProseMirror > .react-renderer.node-column .draggable-content-wrapper > .node-element > div {
@@ -3083,10 +3132,6 @@ body {
3083
3132
  margin-top: 0px;
3084
3133
  margin-bottom: 0px;
3085
3134
  }
3086
- .ProseMirror > .react-renderer .node-variable {
3087
- margin-left: 0.25rem !important;
3088
- margin-right: 0.25rem !important;
3089
- }
3090
3135
  .ProseMirror > .react-renderer .node-variable {
3091
3136
  display: inline-block;
3092
3137
  }
@@ -4736,6 +4781,8 @@ body {
4736
4781
  }
4737
4782
  .courier-variable-chip {
4738
4783
  position: relative;
4784
+ margin-left: 0.125rem;
4785
+ margin-right: 0.125rem;
4739
4786
  display: inline-flex;
4740
4787
  max-width: 100%;
4741
4788
  align-items: center;
@@ -4832,7 +4879,11 @@ body {
4832
4879
  }
4833
4880
  /* Variable Input placeholder styles */
4834
4881
  .variable-input-placeholder {
4882
+ position: relative;
4835
4883
  cursor: text;
4884
+ padding-left: 1px;
4885
+
4886
+ /* Position placeholder absolutely so cursor appears at start */
4836
4887
  }
4837
4888
  .variable-input-placeholder .ProseMirror {
4838
4889
  width: 100%;
@@ -4843,12 +4894,6 @@ body {
4843
4894
  .variable-input-placeholder .ProseMirror p {
4844
4895
  margin: 0px;
4845
4896
  }
4846
- .variable-input-placeholder .ProseMirror p {
4847
- height: 28px;
4848
- }
4849
- .variable-input-placeholder .ProseMirror p {
4850
- width: 100%;
4851
- }
4852
4897
  .variable-input-placeholder .ProseMirror p {
4853
4898
  cursor: text;
4854
4899
  }
@@ -4858,21 +4903,24 @@ body {
4858
4903
  .variable-input-placeholder .ProseMirror p {
4859
4904
  padding: 0px;
4860
4905
  }
4861
- .variable-input-placeholder .ProseMirror p {
4862
- line-height: 28px;
4863
- }
4864
4906
  .variable-input-placeholder .ProseMirror p {
4865
4907
  outline: 2px solid transparent;
4866
4908
  outline-offset: 2px;
4867
4909
  }
4868
4910
  .variable-input-placeholder .ProseMirror p.is-editor-empty:first-child::before,
4869
- .variable-input-placeholder .ProseMirror p.is-empty:first-child::before {
4870
- content: attr(data-placeholder);
4871
- float: left;
4872
- color: var(--muted-foreground);
4873
- pointer-events: none;
4874
- height: 0;
4875
- }
4911
+ .variable-input-placeholder .ProseMirror p.is-empty:first-child::before {
4912
+ content: attr(data-placeholder);
4913
+ color: var(--muted-foreground);
4914
+ pointer-events: none;
4915
+ position: absolute;
4916
+ left: 1px; /* Match the padding */
4917
+ top: 50%;
4918
+ transform: translateY(-50%);
4919
+ }
4920
+ /* Hide scrollbar for variable input while keeping scroll functionality */
4921
+ .variable-input-no-scrollbar::-webkit-scrollbar {
4922
+ display: none;
4923
+ }
4876
4924
  .file\:courier-border-0::file-selector-button {
4877
4925
  border-width: 0px;
4878
4926
  }
@@ -5407,9 +5455,18 @@ body {
5407
5455
  .\[\&\>svg\]\:courier-shrink-0>svg {
5408
5456
  flex-shrink: 0;
5409
5457
  }
5458
+ .\[\&_\.ProseMirror\]\:courier-inline-flex .ProseMirror {
5459
+ display: inline-flex;
5460
+ }
5410
5461
  .\[\&_\.ProseMirror\]\:courier-min-h-\[20px\] .ProseMirror {
5411
5462
  min-height: 20px;
5412
5463
  }
5464
+ .\[\&_\.ProseMirror\]\:courier-flex-nowrap .ProseMirror {
5465
+ flex-wrap: nowrap;
5466
+ }
5467
+ .\[\&_\.ProseMirror\]\:courier-items-center .ProseMirror {
5468
+ align-items: center;
5469
+ }
5413
5470
  .\[\&_\.ProseMirror\]\:courier-border-none .ProseMirror {
5414
5471
  border-style: none;
5415
5472
  }
@@ -5420,6 +5477,18 @@ body {
5420
5477
  outline: 2px solid transparent;
5421
5478
  outline-offset: 2px;
5422
5479
  }
5480
+ .\[\&_\.tiptap\]\:courier-inline-flex .tiptap {
5481
+ display: inline-flex;
5482
+ }
5483
+ .\[\&_\.tiptap\]\:courier-flex-nowrap .tiptap {
5484
+ flex-wrap: nowrap;
5485
+ }
5486
+ .\[\&_\.tiptap\]\:courier-items-center .tiptap {
5487
+ align-items: center;
5488
+ }
5489
+ .\[\&_\.tiptap\]\:courier-whitespace-nowrap .tiptap {
5490
+ white-space: nowrap;
5491
+ }
5423
5492
  .\[\&_\.tiptap\]\:courier-border-none .tiptap {
5424
5493
  border-style: none;
5425
5494
  }
@@ -25,10 +25,6 @@ export interface ElementalListNode extends IsElementalNode {
25
25
  /** Allows bullets to be rendered using an image */
26
26
  imgSrc?: string;
27
27
  imgHref?: string;
28
- /** Border/marker color for list bullets or numbers */
29
- border_color?: string;
30
- /** Border width in pixels (e.g., "2px" or "2") */
31
- border_size?: string;
32
28
  /** Padding (e.g., "10px" or "10px 20px") */
33
29
  padding?: string;
34
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trycourier/react-designer",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "React-based rich text designer component",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -90,12 +90,14 @@
90
90
  "@types/react": "^18.2.0",
91
91
  "@types/react-dom": "^18.0.0",
92
92
  "@vitejs/plugin-react": "^4.0.0",
93
+ "@vitest/coverage-v8": "^0.34.6",
93
94
  "autoprefixer": "^10.4.20",
94
95
  "dotenv": "^16.4.7",
95
96
  "esbuild": "^0.19.0",
96
97
  "esbuild-plugin-d.ts": "^1.3.1",
97
98
  "esbuild-style-plugin": "^1.6.3",
98
99
  "jsdom": "^22.1.0",
100
+ "nyc": "^17.1.0",
99
101
  "postcss": "^8.4.49",
100
102
  "postcss-import": "^16.1.0",
101
103
  "postcss-nested": "^7.0.2",
@@ -146,7 +148,10 @@
146
148
  "typecheck:src": "tsc --noEmit -p tsconfig.build.json",
147
149
  "test": "vitest run",
148
150
  "test:watch": "vitest",
151
+ "test:coverage": "vitest run --coverage",
152
+ "test:coverage:watch": "vitest --coverage",
149
153
  "test:e2e": "playwright test --workers=4",
154
+ "test:e2e:fullcycle": "playwright test --config=playwright.fullcycle.config.ts",
150
155
  "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
151
156
  "analyze": "node build.js --analyze",
152
157
  "release": "node scripts/publish.js",