@mathews_cometchat/bubble-builder 1.0.0-alpha29 → 1.0.0-alpha30

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 (41) hide show
  1. package/dist/App.d.ts +1 -0
  2. package/dist/bridge/api.d.ts +64 -0
  3. package/dist/{assets/index-BIQymSWl.css → bubble-builder.css} +1 -0
  4. package/dist/bubble-builder.es.js +22793 -0
  5. package/dist/bubble-builder.umd.js +20 -0
  6. package/dist/components/Canvas.d.ts +2 -0
  7. package/dist/components/CanvasViewToggle.d.ts +4 -0
  8. package/dist/components/EditorLayout.d.ts +2 -0
  9. package/dist/components/ElementTree.d.ts +2 -0
  10. package/dist/components/LeftPanel.d.ts +2 -0
  11. package/dist/components/NotificationPreview.d.ts +3 -0
  12. package/dist/components/RightPanel.d.ts +2 -0
  13. package/dist/components/ShortcutsPanel.d.ts +2 -0
  14. package/dist/components/TemplateLibrary.d.ts +2 -0
  15. package/dist/components/TopBar.d.ts +2 -0
  16. package/dist/components/properties/ActionEditor.d.ts +7 -0
  17. package/dist/components/properties/BubbleSettingsEditor.d.ts +1 -0
  18. package/dist/components/properties/ElementPropertyEditor.d.ts +7 -0
  19. package/dist/components/properties/IconPicker.d.ts +6 -0
  20. package/dist/components/properties/NotificationEditor.d.ts +1 -0
  21. package/dist/components/properties/VariableInput.d.ts +10 -0
  22. package/dist/components/renderers/ElementRenderer.d.ts +19 -0
  23. package/dist/components/ui/Button.d.ts +8 -0
  24. package/dist/components/ui/Modal.d.ts +11 -0
  25. package/dist/config/builder-config.d.ts +37 -0
  26. package/dist/config/component-templates.d.ts +11 -0
  27. package/dist/config/element-defaults.d.ts +8 -0
  28. package/dist/config/icon-library.d.ts +11 -0
  29. package/dist/config/theme.d.ts +11 -0
  30. package/dist/config/uikit-theme.d.ts +73 -0
  31. package/dist/hooks/useKeyboardShortcuts.d.ts +1 -0
  32. package/dist/lib.d.ts +52 -0
  33. package/dist/store/builder-store.d.ts +101 -0
  34. package/dist/types/schema.d.ts +315 -0
  35. package/dist/utils/element-errors.d.ts +9 -0
  36. package/dist/utils/id.d.ts +4 -0
  37. package/dist/utils/portal-root.d.ts +2 -0
  38. package/dist/utils/validate.d.ts +6 -0
  39. package/package.json +1 -1
  40. package/dist/assets/index-ByxA164g.js +0 -20
  41. package/dist/index.html +0 -15
@@ -0,0 +1,315 @@
1
+ export type Padding = number | {
2
+ top?: number;
3
+ right?: number;
4
+ bottom?: number;
5
+ left?: number;
6
+ };
7
+ export type SizeOrPercentage = number | string;
8
+ export type ColorValue = string;
9
+ export interface OpenUrlAction {
10
+ type: 'openUrl';
11
+ url: string;
12
+ openIn?: 'browser' | 'webview';
13
+ }
14
+ export interface ChatWithUserAction {
15
+ type: 'chatWithUser';
16
+ uid: string;
17
+ }
18
+ export interface ChatWithGroupAction {
19
+ type: 'chatWithGroup';
20
+ guid: string;
21
+ }
22
+ export interface SendMessageAction {
23
+ type: 'sendMessage';
24
+ text: string;
25
+ receiverUid?: string;
26
+ receiverGuid?: string;
27
+ }
28
+ export interface CopyToClipboardAction {
29
+ type: 'copyToClipboard';
30
+ value: string;
31
+ }
32
+ export interface DownloadFileAction {
33
+ type: 'downloadFile';
34
+ url: string;
35
+ filename?: string;
36
+ }
37
+ export interface InitiateCallAction {
38
+ type: 'initiateCall';
39
+ uid?: string;
40
+ guid?: string;
41
+ callType: 'audio' | 'video';
42
+ }
43
+ export interface ApiCallAction {
44
+ type: 'apiCall';
45
+ url: string;
46
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
47
+ headers?: Record<string, string>;
48
+ body?: Record<string, unknown>;
49
+ }
50
+ export interface CustomCallbackAction {
51
+ type: 'customCallback';
52
+ }
53
+ export type BubbleAction = OpenUrlAction | ChatWithUserAction | ChatWithGroupAction | SendMessageAction | CopyToClipboardAction | DownloadFileAction | InitiateCallAction | ApiCallAction | CustomCallbackAction;
54
+ export declare const ACTION_TYPES: readonly ["openUrl", "chatWithUser", "chatWithGroup", "sendMessage", "copyToClipboard", "downloadFile", "initiateCall", "apiCall", "customCallback"];
55
+ export type ActionType = typeof ACTION_TYPES[number];
56
+ export interface TextElement {
57
+ id: string;
58
+ type: 'text';
59
+ content: string;
60
+ variant?: 'title' | 'heading1' | 'heading2' | 'heading3' | 'heading4' | 'body' | 'caption1' | 'caption2';
61
+ color?: ColorValue;
62
+ align?: 'left' | 'center' | 'right' | 'justify';
63
+ fontWeight?: 'regular' | 'medium' | 'bold';
64
+ maxLines?: number;
65
+ padding?: Padding;
66
+ }
67
+ export interface ImageElement {
68
+ id: string;
69
+ type: 'image';
70
+ url: string;
71
+ altText?: string;
72
+ fit?: 'cover' | 'contain' | 'fill';
73
+ width?: SizeOrPercentage;
74
+ height?: SizeOrPercentage;
75
+ borderRadius?: number;
76
+ padding?: Padding;
77
+ }
78
+ export interface IconElement {
79
+ id: string;
80
+ type: 'icon';
81
+ name: string;
82
+ size?: number;
83
+ color?: ColorValue;
84
+ backgroundColor?: ColorValue;
85
+ borderRadius?: number;
86
+ padding?: number;
87
+ }
88
+ export interface AvatarElement {
89
+ id: string;
90
+ type: 'avatar';
91
+ imageUrl?: string;
92
+ fallbackInitials?: string;
93
+ size?: number;
94
+ borderRadius?: number;
95
+ backgroundColor?: ColorValue;
96
+ fontSize?: number;
97
+ fontWeight?: 'regular' | 'medium' | 'bold';
98
+ }
99
+ export interface BadgeElement {
100
+ id: string;
101
+ type: 'badge';
102
+ text: string;
103
+ color?: ColorValue;
104
+ size?: number;
105
+ backgroundColor?: ColorValue;
106
+ borderColor?: ColorValue;
107
+ borderWidth?: number;
108
+ borderRadius?: number;
109
+ padding?: Padding;
110
+ fontSize?: number;
111
+ }
112
+ export interface DividerElement {
113
+ id: string;
114
+ type: 'divider';
115
+ color?: ColorValue;
116
+ thickness?: number;
117
+ margin?: number;
118
+ }
119
+ export interface SpacerElement {
120
+ id: string;
121
+ type: 'spacer';
122
+ height: number;
123
+ }
124
+ export interface ChipElement {
125
+ id: string;
126
+ type: 'chip';
127
+ text: string;
128
+ color?: ColorValue;
129
+ icon?: string;
130
+ backgroundColor?: ColorValue;
131
+ borderColor?: ColorValue;
132
+ borderWidth?: number;
133
+ borderRadius?: number;
134
+ padding?: Padding;
135
+ fontSize?: number;
136
+ }
137
+ export interface ProgressBarElement {
138
+ id: string;
139
+ type: 'progressBar';
140
+ value: number;
141
+ color?: ColorValue;
142
+ trackColor?: ColorValue;
143
+ height?: number;
144
+ label?: string;
145
+ borderRadius?: number;
146
+ labelFontSize?: number;
147
+ labelColor?: ColorValue;
148
+ }
149
+ export interface CodeBlockElement {
150
+ id: string;
151
+ type: 'codeBlock';
152
+ content: string;
153
+ language?: string;
154
+ backgroundColor?: ColorValue;
155
+ textColor?: ColorValue;
156
+ padding?: Padding;
157
+ borderRadius?: number;
158
+ fontSize?: number;
159
+ languageLabelFontSize?: number;
160
+ languageLabelColor?: ColorValue;
161
+ }
162
+ export interface MarkdownElement {
163
+ id: string;
164
+ type: 'markdown';
165
+ content: string;
166
+ baseFontSize?: number;
167
+ linkColor?: ColorValue;
168
+ color?: ColorValue;
169
+ lineHeight?: number;
170
+ }
171
+ export interface RowElement {
172
+ id: string;
173
+ type: 'row';
174
+ items: BubbleElement[];
175
+ gap?: number;
176
+ align?: 'start' | 'center' | 'end' | 'spaceBetween' | 'spaceAround';
177
+ wrap?: boolean;
178
+ scrollable?: boolean;
179
+ peek?: number;
180
+ snap?: 'item' | 'free';
181
+ padding?: Padding;
182
+ backgroundColor?: ColorValue;
183
+ borderRadius?: number;
184
+ borderColor?: ColorValue;
185
+ borderWidth?: number;
186
+ }
187
+ export interface ColumnElement {
188
+ id: string;
189
+ type: 'column';
190
+ items: BubbleElement[];
191
+ gap?: number;
192
+ align?: 'start' | 'center' | 'end' | 'stretch';
193
+ padding?: Padding;
194
+ backgroundColor?: ColorValue;
195
+ borderRadius?: number;
196
+ borderColor?: ColorValue;
197
+ borderWidth?: number;
198
+ }
199
+ export interface GridElement {
200
+ id: string;
201
+ type: 'grid';
202
+ items: BubbleElement[];
203
+ columns?: 2 | 3 | 4;
204
+ gap?: number;
205
+ padding?: Padding;
206
+ backgroundColor?: ColorValue;
207
+ borderRadius?: number;
208
+ borderColor?: ColorValue;
209
+ borderWidth?: number;
210
+ }
211
+ export interface AccordionElement {
212
+ id: string;
213
+ type: 'accordion';
214
+ header: string;
215
+ headerIcon?: string;
216
+ body: BubbleElement[];
217
+ expandedByDefault?: boolean;
218
+ border?: boolean;
219
+ padding?: Padding;
220
+ fontSize?: number;
221
+ fontWeight?: 'regular' | 'medium' | 'bold';
222
+ borderRadius?: number;
223
+ }
224
+ export interface TabsElement {
225
+ id: string;
226
+ type: 'tabs';
227
+ tabs: {
228
+ label: string;
229
+ content: BubbleElement[];
230
+ }[];
231
+ defaultActiveTab?: number;
232
+ tabAlign?: 'start' | 'center' | 'stretch';
233
+ tabPadding?: Padding;
234
+ contentPadding?: Padding;
235
+ fontSize?: number;
236
+ }
237
+ export interface ButtonElement {
238
+ id: string;
239
+ type: 'button';
240
+ label: string;
241
+ action: BubbleAction;
242
+ backgroundColor?: ColorValue;
243
+ textColor?: ColorValue;
244
+ borderColor?: ColorValue;
245
+ borderWidth?: number;
246
+ borderRadius?: number;
247
+ icon?: string;
248
+ iconPosition?: 'left' | 'right';
249
+ size?: number;
250
+ fullWidth?: boolean;
251
+ padding?: Padding;
252
+ fontSize?: number;
253
+ }
254
+ export interface IconButtonElement {
255
+ id: string;
256
+ type: 'iconButton';
257
+ icon: string;
258
+ action: BubbleAction;
259
+ size?: number;
260
+ color?: ColorValue;
261
+ backgroundColor?: ColorValue;
262
+ borderRadius?: number;
263
+ }
264
+ export interface LinkElement {
265
+ id: string;
266
+ type: 'link';
267
+ text: string;
268
+ action: BubbleAction;
269
+ color?: ColorValue;
270
+ underline?: boolean;
271
+ fontSize?: number;
272
+ }
273
+ export interface TableElement {
274
+ id: string;
275
+ type: 'table';
276
+ columns: string[];
277
+ rows: string[][];
278
+ headerBackgroundColor?: ColorValue;
279
+ border?: boolean;
280
+ stripedRows?: boolean;
281
+ cellPadding?: number;
282
+ fontSize?: number;
283
+ stripedRowColor?: ColorValue;
284
+ borderColor?: ColorValue;
285
+ }
286
+ export type BubbleElement = TextElement | ImageElement | IconElement | AvatarElement | BadgeElement | DividerElement | SpacerElement | ChipElement | ProgressBarElement | CodeBlockElement | MarkdownElement | RowElement | ColumnElement | GridElement | AccordionElement | TabsElement | ButtonElement | IconButtonElement | LinkElement | TableElement;
287
+ export type ElementType = BubbleElement['type'];
288
+ export interface BubbleSettings {
289
+ background?: ColorValue;
290
+ borderRadius?: number;
291
+ borderColor?: ColorValue;
292
+ borderWidth?: number;
293
+ padding?: Padding;
294
+ }
295
+ export interface BubbleMessage {
296
+ version: '1.0';
297
+ body: BubbleElement[];
298
+ settings?: BubbleSettings;
299
+ fallbackText: string;
300
+ notificationTitle?: string;
301
+ notificationBody?: string;
302
+ }
303
+ export interface Template {
304
+ id: string;
305
+ name: string;
306
+ description?: string;
307
+ schemaVersion?: string;
308
+ bubbleData: BubbleMessage;
309
+ thumbnail?: string;
310
+ createdBy?: string;
311
+ createdAt: number;
312
+ updatedAt: number;
313
+ }
314
+ export declare function isContainerElement(el: BubbleElement): el is RowElement | ColumnElement | GridElement | AccordionElement;
315
+ export declare function getContainerChildren(el: BubbleElement): BubbleElement[] | null;
@@ -0,0 +1,9 @@
1
+ import type { BubbleElement } from '../types/schema';
2
+ export interface FieldError {
3
+ field: string;
4
+ message: string;
5
+ }
6
+ /** Returns field-level validation errors for a single element. */
7
+ export declare function getElementErrors(el: BubbleElement): FieldError[];
8
+ /** Quick check: does this element have any errors? Useful for tree indicators. */
9
+ export declare function hasElementErrors(el: BubbleElement): boolean;
@@ -0,0 +1,4 @@
1
+ export declare function generateId(type: string): string;
2
+ import type { BubbleElement } from '../types/schema';
3
+ /** Recursively assign IDs to all elements that don't have one */
4
+ export declare function assignIds(elements: BubbleElement[]): BubbleElement[];
@@ -0,0 +1,2 @@
1
+ export declare function setPortalRoot(el: HTMLElement): void;
2
+ export declare function getPortalRoot(): HTMLElement;
@@ -0,0 +1,6 @@
1
+ import type { BubbleMessage } from '../types/schema';
2
+ export interface ValidationError {
3
+ path: string;
4
+ message: string;
5
+ }
6
+ export declare function validateBubble(bubble: BubbleMessage): ValidationError[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mathews_cometchat/bubble-builder",
3
- "version": "1.0.0-alpha29",
3
+ "version": "1.0.0-alpha30",
4
4
  "type": "module",
5
5
  "main": "dist/bubble-builder.umd.js",
6
6
  "module": "dist/bubble-builder.es.js",