@chaibuilder/sdk 1.2.38 → 1.2.40

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 (77) hide show
  1. package/dist/AddBlocks-Q--k4QYI.js +144 -0
  2. package/dist/AddBlocks-a20tIXfX.cjs +1 -0
  3. package/dist/{CanvasArea-MuuWWyW0.cjs → CanvasArea-QQn0aXpj.cjs} +5 -5
  4. package/dist/{CanvasArea-WJYJtUFt.js → CanvasArea-ahsds4rc.js} +183 -184
  5. package/dist/{ChaiBuilderEditor-PLQ8Sq34.cjs → ChaiBuilderEditor-hcoLrtq8.cjs} +49 -49
  6. package/dist/{ChaiBuilderEditor-vzyVasJe.js → ChaiBuilderEditor-wfEkvtJ0.js} +8163 -8050
  7. package/dist/{CurrentPage-j6xVMVFH.js → CurrentPage-f_5eIFbX.js} +9 -10
  8. package/dist/CurrentPage-zo2GKFUx.cjs +1 -0
  9. package/dist/{ListTree-1oWz6vwo.js → ListTree-3riQsfip.js} +1 -2
  10. package/dist/ListTree-FWHoDfbO.cjs +1 -0
  11. package/dist/PagesPanel-0Wi0ezNZ.cjs +1 -0
  12. package/dist/{PagesPanel-PKnqTla9.js → PagesPanel-3KIZEXOS.js} +4 -5
  13. package/dist/{ProjectPanel-hx21JHK8.js → ProjectPanel-0W6XTu0Y.js} +5 -6
  14. package/dist/ProjectPanel-fEYrObPB.cjs +1 -0
  15. package/dist/{Settings-3omes6Yj.js → Settings-ifUbqcam.js} +4 -5
  16. package/dist/Settings-kDwumlBm.cjs +1 -0
  17. package/dist/{SidePanels-vNc0pvVt.js → SidePanels-0P4IaIVn.js} +159 -140
  18. package/dist/SidePanels-JIuL8NLu.cjs +1 -0
  19. package/dist/{BrandingOptions-z7hXgff2.js → ThemeConfiguration-7Hef-UKR.js} +42 -41
  20. package/dist/ThemeConfiguration-CcUA1_9A.cjs +1 -0
  21. package/dist/{Topbar-c3HIPa_q.js → Topbar-0hOp8tE7.js} +3 -4
  22. package/dist/Topbar-Wte9Jbw7.cjs +1 -0
  23. package/dist/UILibrariesPanel-qgwFZYvn.js +145 -0
  24. package/dist/UILibrariesPanel-vXOD3qRz.cjs +1 -0
  25. package/dist/UnsplashImages-Cfq1lKeC.cjs +1 -0
  26. package/dist/{UnsplashImages-IQo081nF.js → UnsplashImages-qUDa1vAS.js} +3 -4
  27. package/dist/{UploadImages-BAy3wsRT.js → UploadImages-Xh-lPuZy.js} +3 -4
  28. package/dist/UploadImages-Zle03BGi.cjs +1 -0
  29. package/dist/add-page-modal-0jmyeD0x.cjs +1 -0
  30. package/dist/{add-page-modal-WWRdRyDM.js → add-page-modal-ued8fkUY.js} +16 -17
  31. package/dist/{confirm-alert-h4RiwjkJ.js → confirm-alert-4kucBgrO.js} +3 -4
  32. package/dist/{confirm-alert-LvvLsCWh.cjs → confirm-alert-rucvO9GC.cjs} +1 -1
  33. package/dist/core.cjs +1 -1
  34. package/dist/core.d.ts +22 -3
  35. package/dist/core.js +44 -45
  36. package/dist/delete-page-modal-Eym3aZzC.cjs +1 -0
  37. package/dist/{delete-page-modal-XymJxo7r.js → delete-page-modal-kxeOpfNd.js} +4 -5
  38. package/dist/email.cjs +1 -1
  39. package/dist/email.d.ts +22 -3
  40. package/dist/email.js +3 -4
  41. package/dist/{form-P0nEC3WH.js → form-2Veryr30.js} +1 -1
  42. package/dist/{form-I4uC5vkq.cjs → form-pdF1XhvW.cjs} +1 -1
  43. package/dist/{index-SP6aKHPH.js → index-OdzdznTv.js} +2 -2
  44. package/dist/{index-mVQVs_cP.cjs → index-SQ1sNajH.cjs} +1 -1
  45. package/dist/{page-viewer-OSlqdbEV.js → page-viewer-6qv40Sm2.js} +5 -6
  46. package/dist/page-viewer-qr3NscoT.cjs +1 -0
  47. package/dist/{project-general-setting-LXfl5i5Z.js → project-general-setting-GVzAsfrk.js} +5 -6
  48. package/dist/{project-general-setting-JR9L7fMQ.cjs → project-general-setting-fm1YfS_2.cjs} +1 -1
  49. package/dist/{project-seo-setting-cVDCPjBD.cjs → project-seo-setting-06jt9oDD.cjs} +1 -1
  50. package/dist/{project-seo-setting-lyzUUxe2.js → project-seo-setting-iPqsGKuc.js} +4 -5
  51. package/dist/{single-page-detail-GeG-SXWn.js → single-page-detail-GVtRl8Pt.js} +6 -7
  52. package/dist/single-page-detail-KQVwWJ-J.cjs +1 -0
  53. package/dist/studio.cjs +1 -1
  54. package/dist/studio.d.ts +22 -3
  55. package/dist/studio.js +3 -4
  56. package/dist/ui.cjs +1 -1
  57. package/dist/ui.d.ts +1 -1
  58. package/dist/ui.js +138 -139
  59. package/dist/{useCanvasSettings-_EzUaA9P.js → useCanvasSettings-E5uIyvUR.js} +1 -1
  60. package/dist/{useCanvasSettings-bP_V0UR2.cjs → useCanvasSettings-yYU51FJ3.cjs} +1 -1
  61. package/package.json +2 -2
  62. package/dist/AddBlocks-G9pjsIyq.cjs +0 -1
  63. package/dist/AddBlocks-dljjAE5r.js +0 -210
  64. package/dist/BrandingOptions-N7iDaMgM.cjs +0 -1
  65. package/dist/CurrentPage-LaeYQ-Ke.cjs +0 -1
  66. package/dist/ListTree-_7e5p_e3.cjs +0 -1
  67. package/dist/PagesPanel-BsELxMie.cjs +0 -1
  68. package/dist/ProjectPanel-1aAFwguw.cjs +0 -1
  69. package/dist/Settings-tYjuuUgX.cjs +0 -1
  70. package/dist/SidePanels-7WG6SXw0.cjs +0 -1
  71. package/dist/Topbar-1zU6Ljsn.cjs +0 -1
  72. package/dist/UnsplashImages-zCQkmow-.cjs +0 -1
  73. package/dist/UploadImages-6K3GdM-b.cjs +0 -1
  74. package/dist/add-page-modal-8FJnOckX.cjs +0 -1
  75. package/dist/delete-page-modal-IRX0oKZJ.cjs +0 -1
  76. package/dist/page-viewer-fonOyiuT.cjs +0 -1
  77. package/dist/single-page-detail-LL8m0Va7.cjs +0 -1
package/dist/core.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ChaiBuilderEditor-PLQ8Sq34.cjs"),s=require("react-i18next");require("./jsx-runtime-Z_BpKhVy.cjs");require("./_commonjsHelpers-wDK0ZLPo.cjs");require("react");require("clsx");require("react-dom");require("@radix-ui/react-scroll-area");require("@floating-ui/react-dom");require("jotai");require("i18next");require("flagged");require("lodash-es");require("./STRINGS-gPz7CUOk.cjs");require("./Functions-N3yhPYKY.cjs");require("tailwind-merge");require("@chaibuilder/runtime");require("@react-hookz/web");require("./MODIFIERS-YPHRtwrM.cjs");require("@radix-ui/react-toggle");require("class-variance-authority");require("./Class-Zc8hpE7f.cjs");require("@radix-ui/react-switch");require("@radix-ui/react-slot");require("@radix-ui/react-accordion");require("@radix-ui/react-icons");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-dialog");require("@radix-ui/react-label");require("@radix-ui/react-tabs");require("@radix-ui/react-tooltip");require("@radix-ui/react-popover");require("@radix-ui/react-menubar");require("@radix-ui/react-hover-card");require("@radix-ui/react-select");require("@radix-ui/react-dropdown-menu");require("@radix-ui/react-separator");require("@radix-ui/react-toast");require("cmdk");require("@radix-ui/react-context-menu");require("react-icons-picker");require("react-quill");require("react-hotkeys-hook");require("lodash");require("lucide-react");exports.ChaiBuilderEditor=e.ChaiBuilderEditor;exports.useActiveModal=e.useActiveModal;exports.useActivePanel=e.useActivePanel;exports.useAddBlock=e.useAddBlock;exports.useAddBlockParent=e.useAddBlockParent;exports.useAddClassesToBlocks=e.useAddClassesToBlocks;exports.useAllBlocks=e.useAllBlocks;exports.useBlocksStore=e.useBlocksStore;exports.useBrandingOptions=e.useBrandingOptions;exports.useBuilderProp=e.useBuilderProp;exports.useBuilderReset=e.useBuilderReset;exports.useCanvasWidth=e.useCanvasWidth;exports.useCanvasZoom=e.useCanvasZoom;exports.useCopyBlockIds=e.useCopyBlockIds;exports.useCopyToClipboard=e.useCopyToClipboard;exports.useCurrentPage=e.useCurrentPage;exports.useCutBlockIds=e.useCutBlockIds;exports.useDarkMode=e.useDarkMode;exports.useDuplicateBlocks=e.useDuplicateBlocks;exports.useGetPageData=e.useGetPageData;exports.useHiddenBlockIds=e.useHiddenBlockIds;exports.useHighlightBlockId=e.useHighlightBlockId;exports.usePasteBlocks=e.usePasteBlocks;exports.usePreviewMode=e.usePreviewMode;exports.useReadOnlyMode=e.useReadOnlyMode;exports.useRemoveBlocks=e.useRemoveBlocks;exports.useRemoveClassesFromBlocks=e.useRemoveClassesFromBlocks;exports.useSavePage=e.useSavePage;exports.useSelectedBlock=e.useSelectedBlock;exports.useSelectedBlockAllClasses=e.useSelectedBlockAllClasses;exports.useSelectedBlockCurrentClasses=e.useSelectedBlockCurrentClasses;exports.useSelectedBlockIds=e.useSelectedBlockIds;exports.useSelectedBlocksDisplayChild=e.useSelectedBlocksDisplayChild;exports.useSelectedBreakpoints=e.useSelectedBreakpoints;exports.useSelectedStylingBlocks=e.useSelectedStylingBlocks;exports.useStylingBreakpoint=e.useStylingBreakpoint;exports.useStylingState=e.useStylingState;exports.useUILibraryBlocks=e.useUILibraryBlocks;exports.useUndoManager=e.useUndoManager;exports.useUpdateBlocksProps=e.useUpdateBlocksProps;exports.useUpdateBlocksPropsRealtime=e.useUpdateBlocksPropsRealtime;Object.defineProperty(exports,"useTranslation",{enumerable:!0,get:()=>s.useTranslation});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ChaiBuilderEditor-hcoLrtq8.cjs"),s=require("react-i18next");require("./jsx-runtime-Z_BpKhVy.cjs");require("./_commonjsHelpers-wDK0ZLPo.cjs");require("react");require("clsx");require("react-dom");require("@radix-ui/react-scroll-area");require("@floating-ui/react-dom");require("jotai");require("i18next");require("flagged");require("lodash-es");require("./STRINGS-gPz7CUOk.cjs");require("./Functions-N3yhPYKY.cjs");require("tailwind-merge");require("@chaibuilder/runtime");require("@react-hookz/web");require("./MODIFIERS-YPHRtwrM.cjs");require("@radix-ui/react-toggle");require("class-variance-authority");require("./Class-Zc8hpE7f.cjs");require("@radix-ui/react-switch");require("@radix-ui/react-slot");require("@radix-ui/react-accordion");require("@radix-ui/react-icons");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-dialog");require("@radix-ui/react-label");require("@radix-ui/react-tabs");require("@radix-ui/react-tooltip");require("@radix-ui/react-popover");require("@radix-ui/react-menubar");require("@radix-ui/react-hover-card");require("@radix-ui/react-select");require("@radix-ui/react-dropdown-menu");require("@radix-ui/react-separator");require("@radix-ui/react-toast");require("cmdk");require("@radix-ui/react-context-menu");require("react-icons-picker");require("react-quill");require("react-hotkeys-hook");require("lucide-react");exports.ChaiBuilderEditor=e.ChaiBuilderEditor;exports.useActiveModal=e.useActiveModal;exports.useActivePanel=e.useActivePanel;exports.useAddBlock=e.useAddBlock;exports.useAddBlockParent=e.useAddBlockParent;exports.useAddClassesToBlocks=e.useAddClassesToBlocks;exports.useAllBlocks=e.useAllBlocks;exports.useBlocksStore=e.useBlocksStore;exports.useBrandingOptions=e.useBrandingOptions;exports.useBuilderProp=e.useBuilderProp;exports.useBuilderReset=e.useBuilderReset;exports.useCanvasWidth=e.useCanvasWidth;exports.useCanvasZoom=e.useCanvasZoom;exports.useCopyBlockIds=e.useCopyBlockIds;exports.useCopyToClipboard=e.useCopyToClipboard;exports.useCurrentPage=e.useCurrentPage;exports.useCutBlockIds=e.useCutBlockIds;exports.useDarkMode=e.useDarkMode;exports.useDuplicateBlocks=e.useDuplicateBlocks;exports.useGetPageData=e.useGetPageData;exports.useHiddenBlockIds=e.useHiddenBlockIds;exports.useHighlightBlockId=e.useHighlightBlockId;exports.usePasteBlocks=e.usePasteBlocks;exports.usePreviewMode=e.usePreviewMode;exports.useReadOnlyMode=e.useReadOnlyMode;exports.useRemoveBlocks=e.useRemoveBlocks;exports.useRemoveClassesFromBlocks=e.useRemoveClassesFromBlocks;exports.useSavePage=e.useSavePage;exports.useSelectedBlock=e.useSelectedBlock;exports.useSelectedBlockAllClasses=e.useSelectedBlockAllClasses;exports.useSelectedBlockCurrentClasses=e.useSelectedBlockCurrentClasses;exports.useSelectedBlockIds=e.useSelectedBlockIds;exports.useSelectedBlocksDisplayChild=e.useSelectedBlocksDisplayChild;exports.useSelectedBreakpoints=e.useSelectedBreakpoints;exports.useSelectedStylingBlocks=e.useSelectedStylingBlocks;exports.useStylingBreakpoint=e.useStylingBreakpoint;exports.useStylingState=e.useStylingState;exports.useUILibraryBlocks=e.useUILibraryBlocks;exports.useUndoManager=e.useUndoManager;exports.useUpdateBlocksProps=e.useUpdateBlocksProps;exports.useUpdateBlocksPropsRealtime=e.useUpdateBlocksPropsRealtime;Object.defineProperty(exports,"useTranslation",{enumerable:!0,get:()=>s.useTranslation});
package/dist/core.d.ts CHANGED
@@ -47,6 +47,7 @@ export declare type ChaiBlock = {
47
47
  export declare const ChaiBuilderEditor: (props: ChaiBuilderEditorProps) => JSX_2.Element;
48
48
 
49
49
  export declare interface ChaiBuilderEditorProps {
50
+ htmlDir?: "ltr" | "rtl";
50
51
  hideSaveButton?: boolean;
51
52
  filterChaiBlock?: (block: any) => boolean;
52
53
  showDebugLogs?: boolean;
@@ -72,12 +73,15 @@ export declare interface ChaiBuilderEditorProps {
72
73
  url: string;
73
74
  }>;
74
75
  askAiCallBack?: (prompt: string, blocks: ChaiBlock[]) => Promise<AskAiResponse>;
76
+ saveAiContextCallback?: (content: string) => Promise<true | Error>;
77
+ aiContext?: string;
75
78
  getExternalPredefinedBlock?: (block: PredefinedBlock) => Promise<PredefinedBlock & {
76
79
  blocks: ChaiBlock[];
77
80
  html: string;
78
81
  }>;
79
- getUILibraryBlocks?: (libraryUuid: string) => Promise<PredefinedBlock[]>;
80
- uiLibraries?: UILibrary[];
82
+ uiLibraries?: Omit<UILibrary, "blocks">[];
83
+ getUILibraryBlocks?: (library: UILibrary) => Promise<UiLibraryBlock[]>;
84
+ getUILibraryBlock?: (library: UILibrary, uiLibBlock: UiLibraryBlock) => Promise<ChaiBlock[]>;
81
85
  subPages?: Block[];
82
86
  subPagesSupport?: boolean;
83
87
  blocks?: ChaiBlock[];
@@ -156,10 +160,13 @@ declare type PredefinedBlock = {
156
160
 
157
161
  declare type ReactComponentType = React_2.ComponentType<any>;
158
162
 
163
+ declare type RichText = string;
164
+
159
165
  declare type SavePageData = {
160
166
  blocks: ChaiBlock[];
161
167
  providers?: DataProvider[];
162
168
  brandingOptions?: Record<string, any>;
169
+ themeConfiguration?: Record<string, any>;
163
170
  };
164
171
 
165
172
  declare type TimeInSeconds = number;
@@ -171,10 +178,22 @@ declare type TStyleBlock = {
171
178
  };
172
179
 
173
180
  declare interface UILibrary {
174
- name: string;
175
181
  uuid: string;
182
+ name: string;
183
+ blocks: UiLibraryBlock[];
184
+ link?: string;
185
+ description?: RichText;
176
186
  }
177
187
 
188
+ declare type UiLibraryBlock = {
189
+ uuid: string;
190
+ group: string;
191
+ name?: string;
192
+ preview?: string;
193
+ tags?: string[];
194
+ description?: string;
195
+ };
196
+
178
197
  export declare const useActiveModal: () => any;
179
198
 
180
199
  /**
package/dist/core.js CHANGED
@@ -1,5 +1,5 @@
1
- import { C as K, l as N, U as Q, m as V, W as X, n as Y, T as Z, i as _, F as $, h as ss, u as es, o as os, p as ts, q as as, r as rs, s as is, t as ps, v as ls, w as ms, x as us, y as ds, z as cs, D as Bs, E as ks, k as ns, H as Cs, I as Ss, V as Ps, M as gs, K as vs, J as ys, L as As, S as Is, X as hs, Y as Ms, N as Rs, P as Ds, O as Us, j as Ts, Q as xs, R as Hs } from "./ChaiBuilderEditor-vzyVasJe.js";
2
- import { useTranslation as bs } from "react-i18next";
1
+ import { C as J, l as K, U as N, m as Q, W as V, n as X, T as Y, i as Z, F as _, h as $, u as ss, o as es, p as os, q as ts, r as as, s as rs, t as is, v as ps, w as ls, x as ms, y as us, z as ds, D as cs, E as Bs, k as ks, H as ns, I as Cs, V as Ss, M as Ps, K as gs, J as vs, L as ys, S as As, X as Is, Y as hs, N as Ms, P as Rs, O as Ds, j as Us, Q as Ts, R as xs } from "./ChaiBuilderEditor-wfEkvtJ0.js";
2
+ import { useTranslation as Os } from "react-i18next";
3
3
  import "./jsx-runtime-WbnYoNE9.js";
4
4
  import "./_commonjsHelpers-UyOWmZb0.js";
5
5
  import "react";
@@ -41,49 +41,48 @@ import "@radix-ui/react-context-menu";
41
41
  import "react-icons-picker";
42
42
  import "react-quill";
43
43
  import "react-hotkeys-hook";
44
- import "lodash";
45
44
  import "lucide-react";
46
45
  export {
47
- K as ChaiBuilderEditor,
48
- N as useActiveModal,
49
- Q as useActivePanel,
50
- V as useAddBlock,
51
- X as useAddBlockParent,
52
- Y as useAddClassesToBlocks,
53
- Z as useAllBlocks,
54
- _ as useBlocksStore,
55
- $ as useBrandingOptions,
56
- ss as useBuilderProp,
57
- es as useBuilderReset,
58
- os as useCanvasWidth,
59
- ts as useCanvasZoom,
60
- as as useCopyBlockIds,
61
- rs as useCopyToClipboard,
62
- is as useCurrentPage,
63
- ps as useCutBlockIds,
64
- ls as useDarkMode,
65
- ms as useDuplicateBlocks,
66
- us as useGetPageData,
67
- ds as useHiddenBlockIds,
68
- cs as useHighlightBlockId,
69
- Bs as usePasteBlocks,
70
- ks as usePreviewMode,
71
- ns as useReadOnlyMode,
72
- Cs as useRemoveBlocks,
73
- Ss as useRemoveClassesFromBlocks,
74
- Ps as useSavePage,
75
- gs as useSelectedBlock,
76
- vs as useSelectedBlockAllClasses,
77
- ys as useSelectedBlockCurrentClasses,
78
- As as useSelectedBlockIds,
79
- Is as useSelectedBlocksDisplayChild,
80
- hs as useSelectedBreakpoints,
81
- Ms as useSelectedStylingBlocks,
82
- Rs as useStylingBreakpoint,
83
- Ds as useStylingState,
84
- bs as useTranslation,
85
- Us as useUILibraryBlocks,
86
- Ts as useUndoManager,
87
- xs as useUpdateBlocksProps,
88
- Hs as useUpdateBlocksPropsRealtime
46
+ J as ChaiBuilderEditor,
47
+ K as useActiveModal,
48
+ N as useActivePanel,
49
+ Q as useAddBlock,
50
+ V as useAddBlockParent,
51
+ X as useAddClassesToBlocks,
52
+ Y as useAllBlocks,
53
+ Z as useBlocksStore,
54
+ _ as useBrandingOptions,
55
+ $ as useBuilderProp,
56
+ ss as useBuilderReset,
57
+ es as useCanvasWidth,
58
+ os as useCanvasZoom,
59
+ ts as useCopyBlockIds,
60
+ as as useCopyToClipboard,
61
+ rs as useCurrentPage,
62
+ is as useCutBlockIds,
63
+ ps as useDarkMode,
64
+ ls as useDuplicateBlocks,
65
+ ms as useGetPageData,
66
+ us as useHiddenBlockIds,
67
+ ds as useHighlightBlockId,
68
+ cs as usePasteBlocks,
69
+ Bs as usePreviewMode,
70
+ ks as useReadOnlyMode,
71
+ ns as useRemoveBlocks,
72
+ Cs as useRemoveClassesFromBlocks,
73
+ Ss as useSavePage,
74
+ Ps as useSelectedBlock,
75
+ gs as useSelectedBlockAllClasses,
76
+ vs as useSelectedBlockCurrentClasses,
77
+ ys as useSelectedBlockIds,
78
+ As as useSelectedBlocksDisplayChild,
79
+ Is as useSelectedBreakpoints,
80
+ hs as useSelectedStylingBlocks,
81
+ Ms as useStylingBreakpoint,
82
+ Rs as useStylingState,
83
+ Os as useTranslation,
84
+ Ds as useUILibraryBlocks,
85
+ Us as useUndoManager,
86
+ Ts as useUpdateBlocksProps,
87
+ xs as useUpdateBlocksPropsRealtime
89
88
  };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./jsx-runtime-Z_BpKhVy.cjs"),r=require("./ChaiBuilderEditor-hcoLrtq8.cjs"),l=require("./index-SQ1sNajH.cjs"),q=require("@radix-ui/react-icons");require("./_commonjsHelpers-wDK0ZLPo.cjs");require("react");require("clsx");require("react-dom");require("@radix-ui/react-scroll-area");require("@floating-ui/react-dom");require("jotai");require("i18next");require("react-i18next");require("flagged");require("lodash-es");require("./STRINGS-gPz7CUOk.cjs");require("./Functions-N3yhPYKY.cjs");require("tailwind-merge");require("@chaibuilder/runtime");require("@react-hookz/web");require("./MODIFIERS-YPHRtwrM.cjs");require("@radix-ui/react-toggle");require("class-variance-authority");require("./Class-Zc8hpE7f.cjs");require("@radix-ui/react-switch");require("@radix-ui/react-slot");require("@radix-ui/react-accordion");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-dialog");require("@radix-ui/react-label");require("@radix-ui/react-tabs");require("@radix-ui/react-tooltip");require("@radix-ui/react-popover");require("@radix-ui/react-menubar");require("@radix-ui/react-hover-card");require("@radix-ui/react-select");require("@radix-ui/react-dropdown-menu");require("@radix-ui/react-separator");require("@radix-ui/react-toast");require("cmdk");require("@radix-ui/react-context-menu");require("react-icons-picker");require("react-quill");require("react-hotkeys-hook");require("lucide-react");require("./core.cjs");require("sonner");require("./html-to-json-VPWiWWGH.cjs");require("himalaya");const d=({pageData:i,projectData:t})=>{const n={},u=l.useDeletePage(),s=i.uuid===t.homepage,o=()=>{u.mutate(i,{onSuccess:()=>{n({uuid:t.homepage,slug:"/home"})}})};return e.jsxRuntimeExports.jsxs(r.AlertDialog,{children:[e.jsxRuntimeExports.jsx(r.AlertDialogTrigger,{disabled:s,children:e.jsxRuntimeExports.jsx("div",{className:`flex h-full items-center justify-center rounded-md border px-2 py-2 font-medium hover:bg-red-400 hover:text-white ${s?"cursor-not-allowed border-red-200 text-red-200":"cursor-pointer border-red-400 text-red-400"}`,children:e.jsxRuntimeExports.jsx(q.TrashIcon,{})})}),e.jsxRuntimeExports.jsxs(r.AlertDialogContent,{children:[e.jsxRuntimeExports.jsxs(r.AlertDialogTitle,{children:["Are you sure you want to delete ",e.jsxRuntimeExports.jsx("i",{className:"text-red-500",children:i.name})," page?"]}),e.jsxRuntimeExports.jsx(r.AlertDialogDescription,{children:"This action cannot be undone. This will permanently delete your page."}),e.jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-end gap-x-3",children:[e.jsxRuntimeExports.jsx(r.AlertDialogCancel,{disabled:u.isPending,children:"Cancel"}),e.jsxRuntimeExports.jsx(r.Button,{variant:"destructive",onClick:o,disabled:u.isPending,children:"Yes, Delete"})]})]})]})};exports.default=d;
@@ -1,6 +1,6 @@
1
1
  import { j as e } from "./jsx-runtime-WbnYoNE9.js";
2
- import { A as p, a as l, b as n, d, e as a, g as c, B as u } from "./ChaiBuilderEditor-vzyVasJe.js";
3
- import { h } from "./index-SP6aKHPH.js";
2
+ import { A as p, a as l, b as n, d, e as a, g as c, B as u } from "./ChaiBuilderEditor-wfEkvtJ0.js";
3
+ import { h } from "./index-OdzdznTv.js";
4
4
  import { TrashIcon as x } from "@radix-ui/react-icons";
5
5
  import "./_commonjsHelpers-UyOWmZb0.js";
6
6
  import "react";
@@ -42,13 +42,12 @@ import "@radix-ui/react-context-menu";
42
42
  import "react-icons-picker";
43
43
  import "react-quill";
44
44
  import "react-hotkeys-hook";
45
- import "lodash";
46
45
  import "lucide-react";
47
46
  import "./core.js";
48
47
  import "sonner";
49
48
  import "./html-to-json-Z6R2o_fA.js";
50
49
  import "himalaya";
51
- const ce = ({ pageData: r, projectData: i }) => {
50
+ const ae = ({ pageData: r, projectData: i }) => {
52
51
  const m = {}, t = h(), o = r.uuid === i.homepage, s = () => {
53
52
  t.mutate(r, {
54
53
  onSuccess: () => {
@@ -79,5 +78,5 @@ const ce = ({ pageData: r, projectData: i }) => {
79
78
  ] });
80
79
  };
81
80
  export {
82
- ce as default
81
+ ae as default
83
82
  };
package/dist/email.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./jsx-runtime-Z_BpKhVy.cjs");require("./core.cjs");const r=require("@radix-ui/react-icons"),q=require("lodash-es"),n=require("./ChaiBuilderEditor-PLQ8Sq34.cjs");require("./_commonjsHelpers-wDK0ZLPo.cjs");require("react");require("react-i18next");require("clsx");require("react-dom");require("@radix-ui/react-scroll-area");require("@floating-ui/react-dom");require("jotai");require("i18next");require("flagged");require("./STRINGS-gPz7CUOk.cjs");require("./Functions-N3yhPYKY.cjs");require("tailwind-merge");require("@chaibuilder/runtime");require("@react-hookz/web");require("./MODIFIERS-YPHRtwrM.cjs");require("@radix-ui/react-toggle");require("class-variance-authority");require("./Class-Zc8hpE7f.cjs");require("@radix-ui/react-switch");require("@radix-ui/react-slot");require("@radix-ui/react-accordion");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-dialog");require("@radix-ui/react-label");require("@radix-ui/react-tabs");require("@radix-ui/react-tooltip");require("@radix-ui/react-popover");require("@radix-ui/react-menubar");require("@radix-ui/react-hover-card");require("@radix-ui/react-select");require("@radix-ui/react-dropdown-menu");require("@radix-ui/react-separator");require("@radix-ui/react-toast");require("cmdk");require("@radix-ui/react-context-menu");require("react-icons-picker");require("react-quill");require("react-hotkeys-hook");require("lodash");require("lucide-react");const o=[{title:"Mobile",content:"Mobile email client",breakpoint:"xs",icon:e.jsxRuntimeExports.jsx(r.MobileIcon,{}),width:400},{title:"Email Client",content:"Content as seen inside an email client",breakpoint:"sm",icon:e.jsxRuntimeExports.jsx(r.MobileIcon,{className:"rotate-90"}),width:700}],s=i=>{const u={...i,filterChaiBlock:t=>q.includes(t.type,"Email/"),importHTMLSupport:!1,dataBindingSupport:!1,breakpoints:o};return e.jsxRuntimeExports.jsx(n.ChaiBuilderEditor,{...u})};exports.ChaiBuilderEmail=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./jsx-runtime-Z_BpKhVy.cjs");require("./core.cjs");const r=require("@radix-ui/react-icons"),q=require("lodash-es"),n=require("./ChaiBuilderEditor-hcoLrtq8.cjs");require("./_commonjsHelpers-wDK0ZLPo.cjs");require("react");require("react-i18next");require("clsx");require("react-dom");require("@radix-ui/react-scroll-area");require("@floating-ui/react-dom");require("jotai");require("i18next");require("flagged");require("./STRINGS-gPz7CUOk.cjs");require("./Functions-N3yhPYKY.cjs");require("tailwind-merge");require("@chaibuilder/runtime");require("@react-hookz/web");require("./MODIFIERS-YPHRtwrM.cjs");require("@radix-ui/react-toggle");require("class-variance-authority");require("./Class-Zc8hpE7f.cjs");require("@radix-ui/react-switch");require("@radix-ui/react-slot");require("@radix-ui/react-accordion");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-dialog");require("@radix-ui/react-label");require("@radix-ui/react-tabs");require("@radix-ui/react-tooltip");require("@radix-ui/react-popover");require("@radix-ui/react-menubar");require("@radix-ui/react-hover-card");require("@radix-ui/react-select");require("@radix-ui/react-dropdown-menu");require("@radix-ui/react-separator");require("@radix-ui/react-toast");require("cmdk");require("@radix-ui/react-context-menu");require("react-icons-picker");require("react-quill");require("react-hotkeys-hook");require("lucide-react");const o=[{title:"Mobile",content:"Mobile email client",breakpoint:"xs",icon:e.jsxRuntimeExports.jsx(r.MobileIcon,{}),width:400},{title:"Email Client",content:"Content as seen inside an email client",breakpoint:"sm",icon:e.jsxRuntimeExports.jsx(r.MobileIcon,{className:"rotate-90"}),width:700}],s=i=>{const u={...i,filterChaiBlock:t=>q.includes(t.type,"Email/"),importHTMLSupport:!1,dataBindingSupport:!1,breakpoints:o};return e.jsxRuntimeExports.jsx(n.ChaiBuilderEditor,{...u})};exports.ChaiBuilderEmail=s;
package/dist/email.d.ts CHANGED
@@ -32,6 +32,7 @@ declare type ChaiBlock = {
32
32
  } & Record<string, any>;
33
33
 
34
34
  declare interface ChaiBuilderEditorProps {
35
+ htmlDir?: "ltr" | "rtl";
35
36
  hideSaveButton?: boolean;
36
37
  filterChaiBlock?: (block: any) => boolean;
37
38
  showDebugLogs?: boolean;
@@ -57,12 +58,15 @@ declare interface ChaiBuilderEditorProps {
57
58
  url: string;
58
59
  }>;
59
60
  askAiCallBack?: (prompt: string, blocks: ChaiBlock[]) => Promise<AskAiResponse>;
61
+ saveAiContextCallback?: (content: string) => Promise<true | Error>;
62
+ aiContext?: string;
60
63
  getExternalPredefinedBlock?: (block: PredefinedBlock) => Promise<PredefinedBlock & {
61
64
  blocks: ChaiBlock[];
62
65
  html: string;
63
66
  }>;
64
- getUILibraryBlocks?: (libraryUuid: string) => Promise<PredefinedBlock[]>;
65
- uiLibraries?: UILibrary[];
67
+ uiLibraries?: Omit<UILibrary, "blocks">[];
68
+ getUILibraryBlocks?: (library: UILibrary) => Promise<UiLibraryBlock[]>;
69
+ getUILibraryBlock?: (library: UILibrary, uiLibBlock: UiLibraryBlock) => Promise<ChaiBlock[]>;
66
70
  subPages?: Block[];
67
71
  subPagesSupport?: boolean;
68
72
  blocks?: ChaiBlock[];
@@ -128,17 +132,32 @@ declare type PredefinedBlock = {
128
132
 
129
133
  declare type ReactComponentType = React_2.ComponentType<any>;
130
134
 
135
+ declare type RichText = string;
136
+
131
137
  declare type SavePageData = {
132
138
  blocks: ChaiBlock[];
133
139
  providers?: DataProvider[];
134
140
  brandingOptions?: Record<string, any>;
141
+ themeConfiguration?: Record<string, any>;
135
142
  };
136
143
 
137
144
  declare type TimeInSeconds = number;
138
145
 
139
146
  declare interface UILibrary {
140
- name: string;
141
147
  uuid: string;
148
+ name: string;
149
+ blocks: UiLibraryBlock[];
150
+ link?: string;
151
+ description?: RichText;
142
152
  }
143
153
 
154
+ declare type UiLibraryBlock = {
155
+ uuid: string;
156
+ group: string;
157
+ name?: string;
158
+ preview?: string;
159
+ tags?: string[];
160
+ description?: string;
161
+ };
162
+
144
163
  export { }
package/dist/email.js CHANGED
@@ -2,7 +2,7 @@ import { j as i } from "./jsx-runtime-WbnYoNE9.js";
2
2
  import "./core.js";
3
3
  import { MobileIcon as t } from "@radix-ui/react-icons";
4
4
  import { includes as p } from "lodash-es";
5
- import { C as e } from "./ChaiBuilderEditor-vzyVasJe.js";
5
+ import { C as e } from "./ChaiBuilderEditor-wfEkvtJ0.js";
6
6
  import "./_commonjsHelpers-UyOWmZb0.js";
7
7
  import "react";
8
8
  import "react-i18next";
@@ -42,7 +42,6 @@ import "@radix-ui/react-context-menu";
42
42
  import "react-icons-picker";
43
43
  import "react-quill";
44
44
  import "react-hotkeys-hook";
45
- import "lodash";
46
45
  import "lucide-react";
47
46
  const n = [
48
47
  {
@@ -59,7 +58,7 @@ const n = [
59
58
  icon: /* @__PURE__ */ i.jsx(t, { className: "rotate-90" }),
60
59
  width: 700
61
60
  }
62
- ], ii = (o) => {
61
+ ], $ = (o) => {
63
62
  const r = {
64
63
  ...o,
65
64
  filterChaiBlock: (m) => p(m.type, "Email/"),
@@ -70,5 +69,5 @@ const n = [
70
69
  return /* @__PURE__ */ i.jsx(e, { ...r });
71
70
  };
72
71
  export {
73
- ii as ChaiBuilderEmail
72
+ $ as ChaiBuilderEmail
74
73
  };
@@ -2,7 +2,7 @@ import { j as u } from "./jsx-runtime-WbnYoNE9.js";
2
2
  import x from "@rjsf/core";
3
3
  import $ from "@rjsf/validator-ajv8";
4
4
  import { includes as h, get as a, set as b, first as F } from "lodash-es";
5
- import { a_ as P, a$ as E, b0 as O, b1 as S } from "./ChaiBuilderEditor-vzyVasJe.js";
5
+ import { a_ as P, a$ as E, b0 as O, b1 as S } from "./ChaiBuilderEditor-wfEkvtJ0.js";
6
6
  const d = (i, l = "") => {
7
7
  switch (i.type) {
8
8
  case "singular":
@@ -1 +1 @@
1
- "use strict";const f=require("./jsx-runtime-Z_BpKhVy.cjs"),y=require("@rjsf/core"),E=require("@rjsf/validator-ajv8"),i=require("lodash-es"),d=require("./ChaiBuilderEditor-PLQ8Sq34.cjs"),h=(c,n="")=>{switch(c.type){case"singular":return c.uiSchema;case"model":const{properties:p}=c,u={};return Object.keys(p).forEach(r=>{const e=p[r];if(i.includes(["slot","styles"],e.type))return;const o=i.get(e,"i18n",!1)?`${r}-${n}`:r;u[o]=h(e,n)}),u;case"list":const{itemProperties:m}=c,l={items:{}};return Object.keys(m).forEach(r=>{const e=m[r];if(i.includes(["slot","styles"],e.type))return;const o=i.get(e,"i18n",!1)?`${r}-${n}`:r;l.items[o]=h(e,n)}),l;default:return{}}},x=(c,n="")=>{switch(c.type){case"singular":return c.schema;case"model":const{properties:p,title:u}=c,m={title:u,type:"object",properties:{}};return Object.keys(p).forEach(o=>{const t=p[o];if(i.includes(["slot","styles"],t.type))return;const s=i.get(t,"i18n",!1)?`${o}-${n}`:o;m.properties[s]=x(t,n)}),m;case"list":const{itemProperties:l,title:r}=c,e={title:r,type:"array",items:{type:"object",properties:{}}};return Object.keys(l).forEach(o=>{const t=l[o];if(i.includes(["slot","styles"],t.type))return;const s=i.get(t,"i18n",!1)?`${o}-${n}`:o;e.items.properties[s]=x(t,n),i.set(e.items,"title",i.get(t,"itemTitle",`${r} item`))}),e;default:return{}}},$=({title:c,properties:n={},formData:p,onChange:u,disabled:m=!1,activeLang:l=""})=>{const r={type:"object",properties:{}},e={};Object.keys(n).forEach(t=>{const s=n[t];if(i.includes(["slot","styles"],s.type))return;const a=i.get(s,"i18n",!1)?`${t}-${l}`:t;r.properties[a]=x(s,l),e[a]=h(s,l)});const o=({...t},s)=>{const a=s==null?void 0:s.replace("root.","").split("/").pop();if(!s||!a)return;const j=i.first(a.split("."));s&&j&&u({...t},j)};return f.jsxRuntimeExports.jsxs(f.jsxRuntimeExports.Fragment,{children:[c&&f.jsxRuntimeExports.jsx("h1",{className:"px-1 text-sm font-semibold underline",children:c}),f.jsxRuntimeExports.jsx("div",{className:"-mx-3",children:f.jsxRuntimeExports.jsx(y,{widgets:{richtext:d.RichTextEditorField,icon:d.IconPickerField,image:d.ImagePickerField},fields:{link:d.LinkField},idSeparator:".",autoComplete:"off",omitExtraData:!0,liveOmit:!0,liveValidate:!0,uiSchema:e,schema:r,formData:p,validator:E,onChange:o,disabled:m})})]})};exports.Form=$;
1
+ "use strict";const f=require("./jsx-runtime-Z_BpKhVy.cjs"),y=require("@rjsf/core"),E=require("@rjsf/validator-ajv8"),i=require("lodash-es"),d=require("./ChaiBuilderEditor-hcoLrtq8.cjs"),h=(c,n="")=>{switch(c.type){case"singular":return c.uiSchema;case"model":const{properties:p}=c,u={};return Object.keys(p).forEach(r=>{const e=p[r];if(i.includes(["slot","styles"],e.type))return;const o=i.get(e,"i18n",!1)?`${r}-${n}`:r;u[o]=h(e,n)}),u;case"list":const{itemProperties:m}=c,l={items:{}};return Object.keys(m).forEach(r=>{const e=m[r];if(i.includes(["slot","styles"],e.type))return;const o=i.get(e,"i18n",!1)?`${r}-${n}`:r;l.items[o]=h(e,n)}),l;default:return{}}},x=(c,n="")=>{switch(c.type){case"singular":return c.schema;case"model":const{properties:p,title:u}=c,m={title:u,type:"object",properties:{}};return Object.keys(p).forEach(o=>{const t=p[o];if(i.includes(["slot","styles"],t.type))return;const s=i.get(t,"i18n",!1)?`${o}-${n}`:o;m.properties[s]=x(t,n)}),m;case"list":const{itemProperties:l,title:r}=c,e={title:r,type:"array",items:{type:"object",properties:{}}};return Object.keys(l).forEach(o=>{const t=l[o];if(i.includes(["slot","styles"],t.type))return;const s=i.get(t,"i18n",!1)?`${o}-${n}`:o;e.items.properties[s]=x(t,n),i.set(e.items,"title",i.get(t,"itemTitle",`${r} item`))}),e;default:return{}}},$=({title:c,properties:n={},formData:p,onChange:u,disabled:m=!1,activeLang:l=""})=>{const r={type:"object",properties:{}},e={};Object.keys(n).forEach(t=>{const s=n[t];if(i.includes(["slot","styles"],s.type))return;const a=i.get(s,"i18n",!1)?`${t}-${l}`:t;r.properties[a]=x(s,l),e[a]=h(s,l)});const o=({...t},s)=>{const a=s==null?void 0:s.replace("root.","").split("/").pop();if(!s||!a)return;const j=i.first(a.split("."));s&&j&&u({...t},j)};return f.jsxRuntimeExports.jsxs(f.jsxRuntimeExports.Fragment,{children:[c&&f.jsxRuntimeExports.jsx("h1",{className:"px-1 text-sm font-semibold underline",children:c}),f.jsxRuntimeExports.jsx("div",{className:"-mx-3",children:f.jsxRuntimeExports.jsx(y,{widgets:{richtext:d.RichTextEditorField,icon:d.IconPickerField,image:d.ImagePickerField},fields:{link:d.LinkField},idSeparator:".",autoComplete:"off",omitExtraData:!0,liveOmit:!0,liveValidate:!0,uiSchema:e,schema:r,formData:p,validator:E,onChange:o,disabled:m})})]})};exports.Form=$;
@@ -20,7 +20,7 @@ import * as b from "react";
20
20
  import H0, { lazy as A2, useCallback as g2, useState as M2, Suspense as u0, useEffect as s0 } from "react";
21
21
  import "./core.js";
22
22
  import { FileTextIcon as p0, GearIcon as V0, EyeClosedIcon as f0, EyeOpenIcon as m0 } from "@radix-ui/react-icons";
23
- import { u as L0, G as Y2, B as X2, A as x0, a as w0, b as B0, c as C0, d as O0, e as A0, f as S0, g as y0, h as b0, C as P0 } from "./ChaiBuilderEditor-vzyVasJe.js";
23
+ import { u as L0, G as Y2, B as X2, A as x0, a as w0, b as B0, c as C0, d as O0, e as A0, f as S0, g as y0, h as b0, C as P0 } from "./ChaiBuilderEditor-wfEkvtJ0.js";
24
24
  import { toast as h1, Toaster as F0 } from "sonner";
25
25
  import { useTranslation as D0 } from "react-i18next";
26
26
  import { sortBy as R0, filter as k0, has as T0, set as E0, capitalize as N0, get as b2, omit as I0, size as P2 } from "lodash-es";
@@ -2043,7 +2043,7 @@ const k4 = () => {
2043
2043
  ] })
2044
2044
  ] })
2045
2045
  ] });
2046
- }, W4 = () => /* @__PURE__ */ i.jsx(I4, { children: /* @__PURE__ */ i.jsx("button", { className: "border-gray-200 rounded-md p-2 mb-2 border", children: /* @__PURE__ */ i.jsx(Q0, { className: "w-4 h-4 text-red-500 cursor-pointer hover:text-red-300 duration-300" }) }) }), U4 = A2(() => import("./PagesPanel-PKnqTla9.js")), j4 = A2(() => import("./ProjectPanel-hx21JHK8.js")), Q4 = A2(() => import("./CurrentPage-j6xVMVFH.js")), K4 = () => /* @__PURE__ */ i.jsx("h2", { children: "Your Logo" }), G4 = () => {
2046
+ }, W4 = () => /* @__PURE__ */ i.jsx(I4, { children: /* @__PURE__ */ i.jsx("button", { className: "border-gray-200 rounded-md p-2 mb-2 border", children: /* @__PURE__ */ i.jsx(Q0, { className: "w-4 h-4 text-red-500 cursor-pointer hover:text-red-300 duration-300" }) }) }), U4 = A2(() => import("./PagesPanel-3KIZEXOS.js")), j4 = A2(() => import("./ProjectPanel-0W6XTu0Y.js")), Q4 = A2(() => import("./CurrentPage-f_5eIFbX.js")), K4 = () => /* @__PURE__ */ i.jsx("h2", { children: "Your Logo" }), G4 = () => {
2047
2047
  const { mutate: a } = y4();
2048
2048
  return b0("editable", !0) ? /* @__PURE__ */ i.jsx(X2, { onClick: a, className: "bg-blue-600 text-white", children: "Publish" }) : null;
2049
2049
  }, q4 = (a) => {