@trycourier/react-designer 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +143 -22
- package/dist/channels.d.ts +7 -0
- package/dist/cjs/index.css +1 -1
- package/dist/cjs/index.css.map +2 -2
- package/dist/cjs/index.js +50 -30
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/styles.css +505 -31
- package/dist/components/BrandEditor/BrandEditor.types.d.ts +36 -0
- package/dist/components/BrandEditor/Editor/BrandFooter/BrandFooter.d.ts +8 -3
- package/dist/components/BrandEditor/Editor/Editor.d.ts +2 -40
- package/dist/components/BrandEditor/Editor/SideBar/SideBar.d.ts +2 -7
- package/dist/components/Providers/BrandProvider.d.ts +0 -12
- package/dist/components/Providers/Providers.types.d.ts +1 -0
- package/dist/components/Providers/TemplateProvider.d.ts +7 -12
- package/dist/components/Providers/api/common.d.ts +1 -1
- package/dist/components/Providers/api/template.d.ts +2 -1
- package/dist/components/Providers/index.d.ts +4 -2
- package/dist/components/Providers/store.d.ts +48 -14
- package/dist/components/Providers/useBrandActions.d.ts +22 -0
- package/dist/components/Providers/useTemplateActions.d.ts +23 -0
- package/dist/components/TemplateEditor/Channels/Channels.d.ts +6 -0
- package/dist/components/TemplateEditor/Channels/Email/Email.d.ts +55 -0
- package/dist/components/TemplateEditor/Channels/Email/Email.test.d.ts +1 -0
- package/dist/components/TemplateEditor/Channels/Email/EmailEditor.d.ts +17 -0
- package/dist/components/TemplateEditor/Channels/Email/EmailEditor.test.d.ts +1 -0
- package/dist/components/TemplateEditor/Channels/Email/EmailLayout.d.ts +9 -0
- package/dist/components/TemplateEditor/Channels/Email/SideBar/SideBar.d.ts +7 -0
- package/dist/components/TemplateEditor/{Editor → Channels/Email}/SideBar/SideBarItemDetails/SideBarItemDetails.d.ts +1 -2
- package/dist/components/TemplateEditor/Channels/Email/SideBar/index.d.ts +2 -0
- package/dist/components/TemplateEditor/Channels/Email/index.d.ts +3 -0
- package/dist/components/TemplateEditor/Channels/Inbox/Inbox.d.ts +33 -0
- package/dist/components/TemplateEditor/Channels/Inbox/Inbox.test.d.ts +1 -0
- package/dist/components/TemplateEditor/Channels/Inbox/InboxEditor.d.ts +4 -0
- package/dist/components/TemplateEditor/Channels/Inbox/InboxEditor.test.d.ts +1 -0
- package/dist/components/TemplateEditor/Channels/Inbox/InboxLayout.d.ts +4 -0
- package/dist/components/TemplateEditor/Channels/Inbox/SideBar/SideBar.d.ts +1 -0
- package/dist/components/TemplateEditor/Channels/Inbox/index.d.ts +3 -0
- package/dist/components/TemplateEditor/Channels/Push/Push.d.ts +35 -0
- package/dist/components/TemplateEditor/Channels/Push/Push.test.d.ts +1 -0
- package/dist/components/TemplateEditor/Channels/Push/PushEditor.d.ts +5 -0
- package/dist/components/TemplateEditor/Channels/Push/PushEditor.test.d.ts +1 -0
- package/dist/components/TemplateEditor/Channels/Push/PushLayout.d.ts +4 -0
- package/dist/components/TemplateEditor/Channels/Push/index.d.ts +3 -0
- package/dist/components/TemplateEditor/Channels/SMS/SMS.d.ts +34 -0
- package/dist/components/TemplateEditor/Channels/SMS/SMS.test.d.ts +1 -0
- package/dist/components/TemplateEditor/Channels/SMS/SMSEditor.d.ts +5 -0
- package/dist/components/TemplateEditor/Channels/SMS/SMSEditor.test.d.ts +1 -0
- package/dist/components/TemplateEditor/Channels/SMS/SMSLayout.d.ts +4 -0
- package/dist/components/TemplateEditor/Channels/SMS/index.d.ts +3 -0
- package/dist/components/TemplateEditor/Channels/index.d.ts +6 -0
- package/dist/components/TemplateEditor/Channels/useChannels.d.ts +14 -0
- package/dist/components/TemplateEditor/Channels/useChannels.test.d.ts +1 -0
- package/dist/components/TemplateEditor/IPhoneFrame/IPhoneFrame.d.ts +4 -0
- package/dist/components/TemplateEditor/IPhoneFrame/index.d.ts +1 -0
- package/dist/components/TemplateEditor/Layout/Layout.d.ts +8 -0
- package/dist/components/TemplateEditor/Layout/index.d.ts +1 -0
- package/dist/components/TemplateEditor/TemplateEditor.d.ts +5 -1
- package/dist/components/TemplateEditor/index.d.ts +19 -0
- package/dist/components/TemplateEditor/store.d.ts +16 -0
- package/dist/components/extensions/Blockquote/Blockquote.test.d.ts +1 -0
- package/dist/components/extensions/Blockquote/Blockquote.types.d.ts +2 -2
- package/dist/components/extensions/Button/Button.test.d.ts +1 -0
- package/dist/components/extensions/Button/Button.types.d.ts +6 -6
- package/dist/components/extensions/ButtonRow/ButtonRow.d.ts +11 -0
- package/dist/components/extensions/ButtonRow/ButtonRow.test.d.ts +1 -0
- package/dist/components/extensions/ButtonRow/ButtonRow.types.d.ts +45 -0
- package/dist/components/extensions/ButtonRow/ButtonRowComponent.d.ts +5 -0
- package/dist/components/extensions/ButtonRow/index.d.ts +4 -0
- package/dist/components/extensions/Divider/Divider.test.d.ts +1 -0
- package/dist/components/extensions/Divider/Divider.types.d.ts +2 -2
- package/dist/components/extensions/DragPlaceholder/DragPlaceholder.test.d.ts +1 -0
- package/dist/components/extensions/FileHandler/FileHandler.test.d.ts +1 -0
- package/dist/components/extensions/FixedChannelPaste/FixedChannelPaste.d.ts +11 -0
- package/dist/components/extensions/FixedChannelPaste/FixedChannelPaste.test.d.ts +1 -0
- package/dist/components/extensions/FixedChannelPaste/index.d.ts +2 -0
- package/dist/components/extensions/FixedChannelSelection/FixedChannelSelection.d.ts +14 -0
- package/dist/components/extensions/FixedChannelSelection/FixedChannelSelection.test.d.ts +1 -0
- package/dist/components/extensions/FixedChannelSelection/index.d.ts +1 -0
- package/dist/components/extensions/Heading/Heading.test.d.ts +1 -0
- package/dist/components/extensions/Image/Image.test.d.ts +1 -0
- package/dist/components/extensions/ImageBlock/ImageBlock.test.d.ts +1 -0
- package/dist/components/extensions/Link/Link.test.d.ts +1 -0
- package/dist/components/extensions/Paragraph/Paragraph.test.d.ts +1 -0
- package/dist/components/extensions/Selection/Selection.test.d.ts +1 -0
- package/dist/components/extensions/TextBlock/TextBlock.test.d.ts +1 -0
- package/dist/components/extensions/TextBlock/TextBlock.types.d.ts +4 -4
- package/dist/components/extensions/UniqueId/UniqueId.test.d.ts +1 -0
- package/dist/components/extensions/Variable/Variable.test.d.ts +1 -0
- package/dist/components/extensions/Variable/VariablePaste.d.ts +2 -0
- package/dist/components/extensions/Variable/VariablePaste.test.d.ts +1 -0
- package/dist/components/extensions/Variable/index.d.ts +1 -0
- package/dist/components/extensions/extension-kit.d.ts +1 -4
- package/dist/components/extensions/index.d.ts +4 -1
- package/dist/components/ui/MainLayout/MainLayout.d.ts +9 -0
- package/dist/components/ui/MainLayout/index.d.ts +1 -0
- package/dist/components/ui/PreviewPanel/PreviewPanel.d.ts +3 -2
- package/dist/components/ui/Status/Status.d.ts +5 -2
- package/dist/components/ui/TextMenu/BubbleTextMenu.d.ts +6 -0
- package/dist/components/ui/TextMenu/TextMenu.d.ts +3 -1
- package/dist/components/ui/TextMenu/config.d.ts +1 -1
- package/dist/components/ui/TextMenu/hooks/useTextmenuStates.d.ts +3 -5
- package/dist/components/ui/TextMenu/store.d.ts +1 -16
- package/dist/components/ui/index.d.ts +1 -1
- package/dist/components/ui-kit/AlertDialog/AlertDialog.d.ts +20 -0
- package/dist/components/ui-kit/AlertDialog/index.d.ts +1 -0
- package/dist/components/ui-kit/Button/Button.d.ts +2 -3
- package/dist/components/ui-kit/ErrorBoundary/ErrorBoundary.d.ts +22 -0
- package/dist/components/ui-kit/ErrorBoundary/index.d.ts +1 -0
- package/dist/components/ui-kit/Icon/BatteryIcon.d.ts +3 -0
- package/dist/components/ui-kit/Icon/ExpandIcon.d.ts +3 -0
- package/dist/components/ui-kit/Icon/HamburgerMenuIcon.d.ts +3 -0
- package/dist/components/ui-kit/Icon/InAppIcon.d.ts +3 -0
- package/dist/components/ui-kit/Icon/InboxIcon.d.ts +3 -0
- package/dist/components/ui-kit/Icon/MoreMenuIcon.d.ts +3 -0
- package/dist/components/ui-kit/Icon/PushIcon.d.ts +3 -0
- package/dist/components/ui-kit/Icon/SMSIcon.d.ts +3 -0
- package/dist/components/ui-kit/Icon/SignalIcon.d.ts +3 -0
- package/dist/components/ui-kit/Icon/WiFiIcon.d.ts +3 -0
- package/dist/components/ui-kit/Icon/index.d.ts +10 -0
- package/dist/components/ui-kit/Separator/Separator.d.ts +4 -0
- package/dist/components/ui-kit/Separator/index.d.ts +1 -0
- package/dist/components/ui-kit/ThemeProvider/ThemeProvider.d.ts +1 -1
- package/dist/components/ui-kit/index.d.ts +3 -0
- package/dist/components/utils/index.d.ts +1 -0
- package/dist/components/utils/safeGetPos.d.ts +13 -0
- package/dist/esm/index.css +1 -1
- package/dist/esm/index.css.map +2 -2
- package/dist/esm/index.js +50 -30
- package/dist/esm/index.js.map +4 -4
- package/dist/esm/styles.css +505 -31
- package/dist/index.d.ts +2 -0
- package/dist/lib/api/uploadImage.d.ts +0 -1
- package/dist/lib/utils/convertElementalToTiptap/convertElementalToTiptap.d.ts +5 -1
- package/dist/lib/utils/convertElementalToTiptap/convertElementalToTiptap.test.d.ts +1 -0
- package/dist/lib/utils/convertMarkdownToTiptap/convertMarkdownToTiptap.test.d.ts +1 -0
- package/dist/lib/utils/convertTiptapToElemental/convertTiptapToElemental.d.ts +2 -2
- package/dist/lib/utils/convertTiptapToElemental/convertTiptapToElemental.test.d.ts +1 -0
- package/dist/lib/utils/convertTiptapToMarkdown/convertTiptapToMarkdown.test.d.ts +1 -0
- package/dist/lib/utils/errors.d.ts +26 -0
- package/dist/lib/utils/getTitle/demo.d.ts +1 -0
- package/dist/lib/utils/getTitle/getTitle.d.ts +18 -0
- package/dist/lib/utils/getTitle/getTitle.test.d.ts +1 -0
- package/dist/lib/utils/getTitle/index.d.ts +2 -0
- package/dist/lib/utils/getTitle/preserveStorageFormat.d.ts +30 -0
- package/dist/lib/utils/getTitle/preserveStorageFormat.test.d.ts +1 -0
- package/dist/lib/utils/index.d.ts +3 -1
- package/dist/lib/utils/updateElemental/index.d.ts +1 -0
- package/dist/lib/utils/updateElemental/updateElemental.d.ts +11 -0
- package/dist/lib/utils/updateElemental/updateElemental.test.d.ts +1 -0
- package/dist/store.d.ts +7 -2
- package/dist/styles.css +505 -31
- package/dist/types/elemental.schema.d.ts +3 -3
- package/package.json +14 -11
- package/dist/components/BrandEditor/Editor/useBlockEditor.d.ts +0 -23
- package/dist/components/TemplateEditor/Editor/Editor.d.ts +0 -11
- package/dist/components/TemplateEditor/Editor/SideBar/SideBar.d.ts +0 -7
- package/dist/components/TemplateEditor/Editor/index.d.ts +0 -1
- package/dist/components/TemplateEditor/Editor/useBlockEditor.d.ts +0 -23
- package/dist/components/ui/EditorLayout/EditorLayout.d.ts +0 -6
- package/dist/components/ui/EditorLayout/index.d.ts +0 -1
- /package/dist/components/TemplateEditor/{Editor → Channels/Email}/SideBar/SideBarItem/SideBarItem.d.ts +0 -0
- /package/dist/components/TemplateEditor/{Editor → Channels/Email}/SideBar/SideBarItem/index.d.ts +0 -0
- /package/dist/components/TemplateEditor/{Editor → Channels/Email}/SideBar/SideBarItemDetails/index.d.ts +0 -0
- /package/dist/components/TemplateEditor/{Editor → Channels/Email}/SideBar/SideBarSortableItemWrapper/SideBarSortableItemWrapper.d.ts +0 -0
- /package/dist/components/TemplateEditor/{Editor → Channels/Email}/SideBar/SideBarSortableItemWrapper/index.d.ts +0 -0
- /package/dist/components/TemplateEditor/{Editor → Channels/Inbox}/SideBar/index.d.ts +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type { TiptapNode, ElementalContent, TiptapDoc } from "../../../types";
|
|
2
2
|
export declare function parseMDContent(content: string): TiptapNode[];
|
|
3
|
-
export
|
|
3
|
+
export interface ConvertElementalToTiptapOptions {
|
|
4
|
+
channel?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function convertElementalToTiptap(elemental: ElementalContent | null | undefined, // Allow null or undefined
|
|
7
|
+
options?: ConvertElementalToTiptapOptions): TiptapDoc;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ElementalNode } from "@/types/elemental.types";
|
|
2
2
|
export interface TiptapNode {
|
|
3
3
|
type: string;
|
|
4
4
|
attrs?: Record<string, unknown>;
|
|
@@ -14,4 +14,4 @@ export interface TiptapDoc {
|
|
|
14
14
|
type: "doc";
|
|
15
15
|
content: TiptapNode[];
|
|
16
16
|
}
|
|
17
|
-
export declare function convertTiptapToElemental(tiptap: TiptapDoc
|
|
17
|
+
export declare function convertTiptapToElemental(tiptap: TiptapDoc): ElementalNode[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ExternalToast } from "sonner";
|
|
2
|
+
/**
|
|
3
|
+
* Error handling utilities for the Courier Designer
|
|
4
|
+
*/
|
|
5
|
+
export interface TemplateError {
|
|
6
|
+
/** Human-readable error message */
|
|
7
|
+
message: string;
|
|
8
|
+
/** Optional toast configuration (duration, action, description, etc.) */
|
|
9
|
+
toastProps?: ExternalToast;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates a custom error (for use in override functions)
|
|
13
|
+
*/
|
|
14
|
+
export declare const createCustomError: (message: string, toastProps?: ExternalToast) => TemplateError;
|
|
15
|
+
/**
|
|
16
|
+
* Checks if an error has a retry action configured
|
|
17
|
+
*/
|
|
18
|
+
export declare const isRetryableError: (error: TemplateError) => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Extracts error message from various error formats for backward compatibility
|
|
21
|
+
*/
|
|
22
|
+
export declare const extractErrorMessage: (error: unknown) => string;
|
|
23
|
+
/**
|
|
24
|
+
* Converts a legacy string error to a TemplateError
|
|
25
|
+
*/
|
|
26
|
+
export declare const convertLegacyError: (error: string | TemplateError) => TemplateError;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function demoTitleExtraction(): void;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ElementalContent, ElementalNode } from "@/types/elemental.types";
|
|
2
|
+
/**
|
|
3
|
+
* Extracts the title from Elemental elements following the same logic as the backend.
|
|
4
|
+
* This function searches through elements to find:
|
|
5
|
+
* 1. Meta elements with a title field
|
|
6
|
+
* 2. Channel elements with raw.subject or raw.title
|
|
7
|
+
* 3. Recursively searches within channel elements
|
|
8
|
+
* 4. Fallback: First text element content (for Push/Inbox channels)
|
|
9
|
+
*/
|
|
10
|
+
export declare function getTitle(elements: ElementalNode[]): string;
|
|
11
|
+
/**
|
|
12
|
+
* Convenience function to get title from ElementalContent
|
|
13
|
+
*/
|
|
14
|
+
export declare function getTitleFromContent(content: ElementalContent | null | undefined): string;
|
|
15
|
+
/**
|
|
16
|
+
* Get title for a specific channel from ElementalContent
|
|
17
|
+
*/
|
|
18
|
+
export declare function getTitleForChannel(content: ElementalContent | null | undefined, channelName: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ElementalContent, ElementalNode } from "@/types/elemental.types";
|
|
2
|
+
/**
|
|
3
|
+
* Cleans an Inbox element by removing styling properties from text and action elements.
|
|
4
|
+
*/
|
|
5
|
+
export declare function cleanInboxElements(elements: ElementalNode[]): ElementalNode[];
|
|
6
|
+
/**
|
|
7
|
+
* Cleans the entire template content by applying Inbox cleaning logic to all Inbox channels.
|
|
8
|
+
*/
|
|
9
|
+
export declare function cleanTemplateContent(content: ElementalContent): ElementalContent;
|
|
10
|
+
/**
|
|
11
|
+
* Determines how the subject/title was originally stored in a template
|
|
12
|
+
* Returns "raw" if stored in channel.raw.subject/title, "meta" if stored in meta element
|
|
13
|
+
*/
|
|
14
|
+
export declare function getSubjectStorageFormat(content: ElementalContent | null | undefined, channelName: string): "raw" | "meta" | "none";
|
|
15
|
+
/**
|
|
16
|
+
* 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.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createTitleUpdate(originalContent: ElementalContent | null | undefined, channelName: string, newTitle: string, elementalNodes: ElementalNode[]): {
|
|
20
|
+
elements: ElementalNode[];
|
|
21
|
+
raw?: {
|
|
22
|
+
subject?: string;
|
|
23
|
+
title?: string;
|
|
24
|
+
text?: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Helper to extract the current title from a channel element regardless of storage format
|
|
29
|
+
*/
|
|
30
|
+
export declare function extractCurrentTitle(channelElement: ElementalNode | undefined, channelName: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { type ClassValue } from "clsx";
|
|
2
2
|
export declare function cn(...inputs: ClassValue[]): string;
|
|
3
3
|
export * from "./convertElementalToTiptap";
|
|
4
|
+
export * from "./convertMarkdownToTiptap";
|
|
4
5
|
export * from "./convertTiptapToElemental";
|
|
5
6
|
export * from "./getRenderContainer";
|
|
7
|
+
export * from "./getTitle";
|
|
8
|
+
export * from "./updateElemental";
|
|
6
9
|
export * from "./useForwardedRefCallback";
|
|
7
|
-
export * from "./convertMarkdownToTiptap";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./updateElemental";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ElementalContent, ElementalNode } from "../../../types/elemental.types";
|
|
2
|
+
interface ElementalChannelSpecificProps {
|
|
3
|
+
channel?: string;
|
|
4
|
+
[key: string]: any;
|
|
5
|
+
}
|
|
6
|
+
export interface UpdateElementalOptions {
|
|
7
|
+
elements?: ElementalNode[];
|
|
8
|
+
channel?: string | ElementalChannelSpecificProps;
|
|
9
|
+
}
|
|
10
|
+
export declare function updateElemental(doc: ElementalContent | null | undefined, updates: UpdateElementalOptions): ElementalContent;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/store.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { ChannelType } from "./channels";
|
|
2
|
+
export declare const channelAtom: import("jotai").PrimitiveAtom<ChannelType> & {
|
|
3
|
+
init: ChannelType;
|
|
3
4
|
};
|
|
5
|
+
export declare const pageAtom: import("jotai").PrimitiveAtom<"brand" | "template"> & {
|
|
6
|
+
init: "brand" | "template";
|
|
7
|
+
};
|
|
8
|
+
export * from "./channels";
|