@trycourier/react-designer 0.0.10 → 0.2.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 (29) hide show
  1. package/dist/cjs/index.css +1 -1
  2. package/dist/cjs/index.css.map +2 -2
  3. package/dist/cjs/index.js +46 -50
  4. package/dist/cjs/index.js.map +4 -4
  5. package/dist/cjs/styles.css +23 -23
  6. package/dist/components/Providers/store.d.ts +5 -0
  7. package/dist/components/Providers/useTemplateActions.d.ts +21 -1
  8. package/dist/components/TemplateEditor/Channels/Email/Email.d.ts +2 -0
  9. package/dist/components/TemplateEditor/Channels/MSTeams/MSTeamsEditor.d.ts +2 -1
  10. package/dist/components/TemplateEditor/Channels/Push/Push.d.ts +2 -6
  11. package/dist/components/TemplateEditor/Channels/SMS/SMS.d.ts +2 -5
  12. package/dist/components/TemplateEditor/Channels/Slack/SlackEditor.d.ts +2 -1
  13. package/dist/components/TemplateEditor/ReadOnlyEditorContent.d.ts +7 -0
  14. package/dist/components/TemplateEditor/store.d.ts +4 -2
  15. package/dist/components/extensions/Button/Button.types.d.ts +2 -2
  16. package/dist/components/extensions/ImageBlock/ImageBlock.types.d.ts +2 -2
  17. package/dist/components/extensions/TextBlock/TextBlock.types.d.ts +2 -2
  18. package/dist/components/extensions/Variable/VariableIcon.d.ts +2 -0
  19. package/dist/components/ui/PreviewPanel/PreviewPanel.d.ts +2 -1
  20. package/dist/esm/index.css +1 -1
  21. package/dist/esm/index.css.map +2 -2
  22. package/dist/esm/index.js +46 -50
  23. package/dist/esm/index.js.map +4 -4
  24. package/dist/esm/styles.css +23 -23
  25. package/dist/lib/utils/getTitle/index.d.ts +1 -1
  26. package/dist/lib/utils/getTitle/preserveStorageFormat.d.ts +9 -1
  27. package/dist/styles.css +23 -23
  28. package/dist/types/elemental.types.d.ts +2 -2
  29. package/package.json +1 -1
@@ -1534,6 +1534,11 @@ body {
1534
1534
  .courier-overflow-y-auto {
1535
1535
  overflow-y: auto;
1536
1536
  }
1537
+ .courier-truncate {
1538
+ overflow: hidden;
1539
+ text-overflow: ellipsis;
1540
+ white-space: nowrap;
1541
+ }
1537
1542
  .courier-whitespace-nowrap {
1538
1543
  white-space: nowrap;
1539
1544
  }
@@ -1635,6 +1640,10 @@ body {
1635
1640
  --tw-border-opacity: 1;
1636
1641
  border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
1637
1642
  }
1643
+ .courier-border-\[\#BFDBFE\] {
1644
+ --tw-border-opacity: 1;
1645
+ border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));
1646
+ }
1638
1647
  .courier-border-accent-foreground {
1639
1648
  border-color: var(--accent-foreground);
1640
1649
  }
@@ -1658,10 +1667,6 @@ body {
1658
1667
  --tw-border-opacity: 1;
1659
1668
  border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
1660
1669
  }
1661
- .courier-border-gray-400 {
1662
- --tw-border-opacity: 1;
1663
- border-color: rgb(156 163 175 / var(--tw-border-opacity, 1));
1664
- }
1665
1670
  .courier-border-input {
1666
1671
  border-color: var(--input);
1667
1672
  }
@@ -1738,6 +1743,10 @@ body {
1738
1743
  --tw-bg-opacity: 1;
1739
1744
  background-color: rgb(229 229 229 / var(--tw-bg-opacity, 1));
1740
1745
  }
1746
+ .courier-bg-\[\#EFF6FF\] {
1747
+ --tw-bg-opacity: 1;
1748
+ background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
1749
+ }
1741
1750
  .courier-bg-\[\#F5F5F5\] {
1742
1751
  --tw-bg-opacity: 1;
1743
1752
  background-color: rgb(245 245 245 / var(--tw-bg-opacity, 1));
@@ -1995,6 +2004,9 @@ body {
1995
2004
  .courier-pb-6 {
1996
2005
  padding-bottom: 1.5rem;
1997
2006
  }
2007
+ .courier-pl-1 {
2008
+ padding-left: 0.25rem;
2009
+ }
1998
2010
  .courier-pl-2 {
1999
2011
  padding-left: 0.5rem;
2000
2012
  }
@@ -2013,9 +2025,6 @@ body {
2013
2025
  .courier-pr-2 {
2014
2026
  padding-right: 0.5rem;
2015
2027
  }
2016
- .courier-pr-3 {
2017
- padding-right: 0.75rem;
2018
- }
2019
2028
  .courier-pr-4 {
2020
2029
  padding-right: 1rem;
2021
2030
  }
@@ -2046,6 +2055,9 @@ body {
2046
2055
  .courier-text-center {
2047
2056
  text-align: center;
2048
2057
  }
2058
+ .courier-font-mono {
2059
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
2060
+ }
2049
2061
  .courier-font-sans {
2050
2062
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
2051
2063
  }
@@ -2110,6 +2122,9 @@ body {
2110
2122
  .courier-leading-relaxed {
2111
2123
  line-height: 1.625;
2112
2124
  }
2125
+ .courier-tracking-\[0\.64px\] {
2126
+ letter-spacing: 0.64px;
2127
+ }
2113
2128
  .courier-tracking-widest {
2114
2129
  letter-spacing: 0.1em;
2115
2130
  }
@@ -2884,7 +2899,7 @@ body {
2884
2899
  color: rgb(163 163 163 / var(--tw-text-opacity, 1));
2885
2900
  }
2886
2901
  .ProseMirror>.react-renderer.node-paragraph .is-empty .courier-custom-code::after, .ProseMirror>.react-renderer.node-blockquote .is-empty .courier-custom-code::after, .ProseMirror>.react-renderer.node-customCode .is-empty .courier-custom-code::after {
2887
- content: 'Add custom HTML code...';
2902
+ content: 'Use the right panel to add custom HTML code...';
2888
2903
  }
2889
2904
  .ProseMirror>.react-renderer.node-paragraph .is-empty .courier-custom-code::after, .ProseMirror>.react-renderer.node-blockquote .is-empty .courier-custom-code::after, .ProseMirror>.react-renderer.node-customCode .is-empty .courier-custom-code::after {
2890
2905
  position: absolute;
@@ -3584,17 +3599,9 @@ body {
3584
3599
  .read-only\:courier-border-transparent:read-only {
3585
3600
  border-color: transparent;
3586
3601
  }
3587
- .hover\:courier-border-\[\#3B82F6\]:hover {
3588
- --tw-border-opacity: 1;
3589
- border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
3590
- }
3591
3602
  .hover\:courier-border-accent-foreground:hover {
3592
3603
  border-color: var(--accent-foreground);
3593
3604
  }
3594
- .hover\:courier-bg-\[\#3B82F6\]:hover {
3595
- --tw-bg-opacity: 1;
3596
- background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
3597
- }
3598
3605
  .hover\:courier-bg-accent:hover {
3599
3606
  background-color: var(--accent);
3600
3607
  }
@@ -3633,10 +3640,6 @@ body {
3633
3640
  .hover\:courier-bg-opacity-20:hover {
3634
3641
  --tw-bg-opacity: 0.2;
3635
3642
  }
3636
- .hover\:courier-text-\[\#ffffff\]:hover {
3637
- --tw-text-opacity: 1;
3638
- color: rgb(255 255 255 / var(--tw-text-opacity, 1));
3639
- }
3640
3643
  .hover\:courier-text-accent-foreground:hover {
3641
3644
  color: var(--accent-foreground);
3642
3645
  }
@@ -3718,9 +3721,6 @@ body {
3718
3721
  .disabled\:courier-opacity-50:disabled {
3719
3722
  opacity: 0.5;
3720
3723
  }
3721
- .courier-group:hover .group-hover\:courier-stroke-primary {
3722
- stroke: var(--primary);
3723
- }
3724
3724
  .courier-group.toaster .group-\[\.toaster\]\:courier-border-border {
3725
3725
  border-color: var(--border);
3726
3726
  }
@@ -1,2 +1,2 @@
1
1
  export { getTitle, getTitleFromContent, getTitleForChannel } from "./getTitle";
2
- export { getSubjectStorageFormat, createTitleUpdate, extractCurrentTitle, } from "./preserveStorageFormat";
2
+ export { getSubjectStorageFormat, createTitleUpdate, extractCurrentTitle, cleanSMSElements, cleanPushElements, cleanInboxElements, } from "./preserveStorageFormat";
@@ -3,6 +3,14 @@ import type { ElementalContent, ElementalNode } from "@/types/elemental.types";
3
3
  * Cleans an Inbox element by removing styling properties from text and action elements.
4
4
  */
5
5
  export declare function cleanInboxElements(elements: ElementalNode[]): ElementalNode[];
6
+ /**
7
+ * Cleans Push elements by removing styling properties from text elements.
8
+ */
9
+ export declare function cleanPushElements(elements: ElementalNode[]): ElementalNode[];
10
+ /**
11
+ * Cleans SMS elements by removing styling properties from text elements.
12
+ */
13
+ export declare function cleanSMSElements(elements: ElementalNode[]): ElementalNode[];
6
14
  /**
7
15
  * Cleans the entire template content by applying Inbox cleaning logic to all Inbox channels.
8
16
  */
@@ -14,7 +22,7 @@ export declare function cleanTemplateContent(content: ElementalContent): Element
14
22
  export declare function getSubjectStorageFormat(content: ElementalContent | null | undefined, channelName: string): "raw" | "meta" | "none";
15
23
  /**
16
24
  * Creates the appropriate subject/title storage structure based on the detected format.
17
- * For Push and Inbox channels, extracts the first text element as title.
25
+ * For Push, SMS, and Inbox channels, uses elements array.
18
26
  */
19
27
  export declare function createTitleUpdate(originalContent: ElementalContent | null | undefined, channelName: string, newTitle: string, elementalNodes: ElementalNode[]): {
20
28
  elements: ElementalNode[];
package/dist/styles.css CHANGED
@@ -1534,6 +1534,11 @@ body {
1534
1534
  .courier-overflow-y-auto {
1535
1535
  overflow-y: auto;
1536
1536
  }
1537
+ .courier-truncate {
1538
+ overflow: hidden;
1539
+ text-overflow: ellipsis;
1540
+ white-space: nowrap;
1541
+ }
1537
1542
  .courier-whitespace-nowrap {
1538
1543
  white-space: nowrap;
1539
1544
  }
@@ -1635,6 +1640,10 @@ body {
1635
1640
  --tw-border-opacity: 1;
1636
1641
  border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
1637
1642
  }
1643
+ .courier-border-\[\#BFDBFE\] {
1644
+ --tw-border-opacity: 1;
1645
+ border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));
1646
+ }
1638
1647
  .courier-border-accent-foreground {
1639
1648
  border-color: var(--accent-foreground);
1640
1649
  }
@@ -1658,10 +1667,6 @@ body {
1658
1667
  --tw-border-opacity: 1;
1659
1668
  border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
1660
1669
  }
1661
- .courier-border-gray-400 {
1662
- --tw-border-opacity: 1;
1663
- border-color: rgb(156 163 175 / var(--tw-border-opacity, 1));
1664
- }
1665
1670
  .courier-border-input {
1666
1671
  border-color: var(--input);
1667
1672
  }
@@ -1738,6 +1743,10 @@ body {
1738
1743
  --tw-bg-opacity: 1;
1739
1744
  background-color: rgb(229 229 229 / var(--tw-bg-opacity, 1));
1740
1745
  }
1746
+ .courier-bg-\[\#EFF6FF\] {
1747
+ --tw-bg-opacity: 1;
1748
+ background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
1749
+ }
1741
1750
  .courier-bg-\[\#F5F5F5\] {
1742
1751
  --tw-bg-opacity: 1;
1743
1752
  background-color: rgb(245 245 245 / var(--tw-bg-opacity, 1));
@@ -1995,6 +2004,9 @@ body {
1995
2004
  .courier-pb-6 {
1996
2005
  padding-bottom: 1.5rem;
1997
2006
  }
2007
+ .courier-pl-1 {
2008
+ padding-left: 0.25rem;
2009
+ }
1998
2010
  .courier-pl-2 {
1999
2011
  padding-left: 0.5rem;
2000
2012
  }
@@ -2013,9 +2025,6 @@ body {
2013
2025
  .courier-pr-2 {
2014
2026
  padding-right: 0.5rem;
2015
2027
  }
2016
- .courier-pr-3 {
2017
- padding-right: 0.75rem;
2018
- }
2019
2028
  .courier-pr-4 {
2020
2029
  padding-right: 1rem;
2021
2030
  }
@@ -2046,6 +2055,9 @@ body {
2046
2055
  .courier-text-center {
2047
2056
  text-align: center;
2048
2057
  }
2058
+ .courier-font-mono {
2059
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
2060
+ }
2049
2061
  .courier-font-sans {
2050
2062
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
2051
2063
  }
@@ -2110,6 +2122,9 @@ body {
2110
2122
  .courier-leading-relaxed {
2111
2123
  line-height: 1.625;
2112
2124
  }
2125
+ .courier-tracking-\[0\.64px\] {
2126
+ letter-spacing: 0.64px;
2127
+ }
2113
2128
  .courier-tracking-widest {
2114
2129
  letter-spacing: 0.1em;
2115
2130
  }
@@ -2884,7 +2899,7 @@ body {
2884
2899
  color: rgb(163 163 163 / var(--tw-text-opacity, 1));
2885
2900
  }
2886
2901
  .ProseMirror>.react-renderer.node-paragraph .is-empty .courier-custom-code::after, .ProseMirror>.react-renderer.node-blockquote .is-empty .courier-custom-code::after, .ProseMirror>.react-renderer.node-customCode .is-empty .courier-custom-code::after {
2887
- content: 'Add custom HTML code...';
2902
+ content: 'Use the right panel to add custom HTML code...';
2888
2903
  }
2889
2904
  .ProseMirror>.react-renderer.node-paragraph .is-empty .courier-custom-code::after, .ProseMirror>.react-renderer.node-blockquote .is-empty .courier-custom-code::after, .ProseMirror>.react-renderer.node-customCode .is-empty .courier-custom-code::after {
2890
2905
  position: absolute;
@@ -3584,17 +3599,9 @@ body {
3584
3599
  .read-only\:courier-border-transparent:read-only {
3585
3600
  border-color: transparent;
3586
3601
  }
3587
- .hover\:courier-border-\[\#3B82F6\]:hover {
3588
- --tw-border-opacity: 1;
3589
- border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
3590
- }
3591
3602
  .hover\:courier-border-accent-foreground:hover {
3592
3603
  border-color: var(--accent-foreground);
3593
3604
  }
3594
- .hover\:courier-bg-\[\#3B82F6\]:hover {
3595
- --tw-bg-opacity: 1;
3596
- background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
3597
- }
3598
3605
  .hover\:courier-bg-accent:hover {
3599
3606
  background-color: var(--accent);
3600
3607
  }
@@ -3633,10 +3640,6 @@ body {
3633
3640
  .hover\:courier-bg-opacity-20:hover {
3634
3641
  --tw-bg-opacity: 0.2;
3635
3642
  }
3636
- .hover\:courier-text-\[\#ffffff\]:hover {
3637
- --tw-text-opacity: 1;
3638
- color: rgb(255 255 255 / var(--tw-text-opacity, 1));
3639
- }
3640
3643
  .hover\:courier-text-accent-foreground:hover {
3641
3644
  color: var(--accent-foreground);
3642
3645
  }
@@ -3718,9 +3721,6 @@ body {
3718
3721
  .disabled\:courier-opacity-50:disabled {
3719
3722
  opacity: 0.5;
3720
3723
  }
3721
- .courier-group:hover .group-hover\:courier-stroke-primary {
3722
- stroke: var(--primary);
3723
- }
3724
3724
  .courier-group.toaster .group-\[\.toaster\]\:courier-border-border {
3725
3725
  border-color: var(--border);
3726
3726
  }
@@ -139,8 +139,8 @@ export interface ElementalActionNode extends IsElementalNode {
139
139
  }
140
140
  export interface ElementalDividerNode extends IsElementalNode {
141
141
  type: "divider";
142
- dividerColor?: string;
143
- borderWidth?: string;
142
+ color?: string;
143
+ width?: string;
144
144
  padding?: string;
145
145
  }
146
146
  export interface ElementalGroupNode extends IsElementalNode {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trycourier/react-designer",
3
- "version": "0.0.10",
3
+ "version": "0.2.0",
4
4
  "description": "React-based rich text designer component",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",