@chaibuilder/sdk 2.0.0-beta.51 → 2.0.0-beta.54

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.
@@ -1,17 +1,18 @@
1
- import { registerChaiBlockSchema as u, StylesProp as c, registerChaiBlock as p, closestBlockProp as B, stylesProp as I, runtimeProp as R } from "@chaibuilder/runtime";
2
- import { j as s } from "./jsx-runtime-Drh4NO5G.js";
3
- import * as m from "react";
4
- import { c as _, G as z, g as v } from "./iconBase-DHfFLkem.js";
5
- import { ButtonIcon as N, CodeIcon as H, HeadingIcon as q, TextIcon as F, CursorTextIcon as G, Link1Icon as U, ImageIcon as E, RowsIcon as V, ColumnsIcon as O, SketchLogoIcon as W, VideoIcon as X, DividerHorizontalIcon as Y, MoonIcon as $, SunIcon as Z, SpaceBetweenVerticallyIcon as J, InputIcon as D, RadiobuttonIcon as K, DropdownMenuIcon as T, CheckboxIcon as Q, LetterCaseToggleIcon as ee } from "@radix-ui/react-icons";
6
- import { isEmpty as k, get as f, isNull as te, pick as oe, omit as le, map as j } from "lodash-es";
7
- import { GlobeIcon as ne, GroupIcon as se, Columns as re, Rows as ie } from "lucide-react";
8
- const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("div", { className: _("pointer-events-none flex h-20 flex-col items-center justify-center p-2", e), children: /* @__PURE__ */ s.jsx("div", { className: "h-full w-full rounded bg-gray-200 p-2 dark:bg-gray-800", children: /* @__PURE__ */ s.jsx("div", { className: "flex h-full w-full items-center justify-center outline-dashed outline-1 -outline-offset-1 outline-gray-400 duration-300 dark:outline-gray-700" }) }) }) : null, ae = (e) => {
1
+ import { registerChaiBlockSchema as u, StylesProp as c, registerChaiBlock as p, closestBlockProp as _, stylesProp as C, runtimeProp as z } from "@chaibuilder/runtime";
2
+ import { j as s } from "./jsx-runtime-Dx-03ztt.js";
3
+ import * as h from "react";
4
+ import { createElement as v } from "react";
5
+ import { c as L, G as H, g as B } from "./iconBase-DHfFLkem.js";
6
+ import { ButtonIcon as $, CodeIcon as q, HeadingIcon as F, TextIcon as G, CursorTextIcon as U, MoonIcon as D, SunIcon as V, DividerHorizontalIcon as O, SketchLogoIcon as W, ImageIcon as T, Link1Icon as X, RowsIcon as Y, ColumnsIcon as Z, SpaceBetweenVerticallyIcon as J, VideoIcon as K, DropdownMenuIcon as E, CheckboxIcon as Q, InputIcon as A, LetterCaseToggleIcon as ee, RadiobuttonIcon as te } from "@radix-ui/react-icons";
7
+ import { isEmpty as k, get as f, isNull as oe, pick as le, omit as ne, map as P } from "lodash-es";
8
+ import { GlobeIcon as se, GroupIcon as re, Columns as ie, Rows as ae } from "lucide-react";
9
+ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("div", { className: L("pointer-events-none flex h-20 flex-col items-center justify-center p-2", e), children: /* @__PURE__ */ s.jsx("div", { className: "h-full w-full rounded bg-gray-200 p-2 dark:bg-gray-800", children: /* @__PURE__ */ s.jsx("div", { className: "flex h-full w-full items-center justify-center outline-dashed outline-1 -outline-offset-1 outline-gray-400 duration-300 dark:outline-gray-700" }) }) }) : null, ce = (e) => {
9
10
  const { blockProps: o, inBuilder: t, backgroundImage: l, children: n, tag: r = "div", styles: i } = e;
10
11
  let a = n;
11
12
  n || (a = /* @__PURE__ */ s.jsx(w, { inBuilder: t }));
12
13
  let d = {};
13
- return l && (d = { backgroundImage: `url(${l})` }), m.createElement(r, { ...o, ...i, style: d }, a);
14
- }, ce = {
14
+ return l && (d = { backgroundImage: `url(${l})` }), h.createElement(r, { ...o, ...i, style: d }, a);
15
+ }, de = {
15
16
  type: "Box",
16
17
  label: "Box",
17
18
  category: "core",
@@ -52,18 +53,18 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
52
53
  }
53
54
  }),
54
55
  canAcceptBlock: () => !0
55
- }, de = (e) => {
56
- const { blockProps: o, iconSize: t, icon: l, content: n, styles: r, children: i, iconPos: a, link: d, inBuilder: y } = e, h = l, b = i || /* @__PURE__ */ s.jsxs(s.Fragment, { children: [
56
+ }, pe = (e) => {
57
+ const { blockProps: o, iconSize: t, icon: l, content: n, styles: r, children: i, iconPos: a, link: d, inBuilder: y } = e, m = l, b = i || /* @__PURE__ */ s.jsxs(s.Fragment, { children: [
57
58
  /* @__PURE__ */ s.jsx("span", { "data-ai-key": "content", children: n }),
58
- h && /* @__PURE__ */ s.jsx(
59
+ m && /* @__PURE__ */ s.jsx(
59
60
  "div",
60
61
  {
61
62
  style: { width: t + "px" },
62
63
  className: a + " " + (a === "order-first" ? "mr-2" : "ml-2") || "",
63
- dangerouslySetInnerHTML: { __html: h }
64
+ dangerouslySetInnerHTML: { __html: m }
64
65
  }
65
66
  )
66
- ] }), g = m.createElement(
67
+ ] }), g = v(
67
68
  "button",
68
69
  {
69
70
  ...o,
@@ -73,11 +74,11 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
73
74
  b
74
75
  );
75
76
  return k(f(d, "href")) ? g : y ? /* @__PURE__ */ s.jsx("span", { children: g }) : /* @__PURE__ */ s.jsx("a", { href: f(d, "href") || "/", target: f(d, "target", "_self"), children: g });
76
- }, pe = {
77
+ }, ue = {
77
78
  type: "Button",
78
79
  label: "Button",
79
80
  category: "core",
80
- icon: N,
81
+ icon: $,
81
82
  group: "basic",
82
83
  ...u({
83
84
  properties: {
@@ -124,24 +125,24 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
124
125
  }),
125
126
  i18nProps: ["content"],
126
127
  aiProps: ["content"]
127
- }, ue = (e) => {
128
+ }, ge = (e) => {
128
129
  const { blockProps: o, styles: t, htmlCode: l, inBuilder: n } = e;
129
130
  return n ? /* @__PURE__ */ s.jsxs("div", { className: "relative", children: [
130
131
  n ? /* @__PURE__ */ s.jsx("div", { ...o, ...t, className: "absolute z-20 h-full w-full" }) : null,
131
- m.createElement("div", {
132
+ h.createElement("div", {
132
133
  ...t,
133
134
  dangerouslySetInnerHTML: { __html: l.replace(/<script.*?>.*?<\/script>/g, "") }
134
135
  })
135
- ] }) : m.createElement("div", {
136
+ ] }) : h.createElement("div", {
136
137
  ...o,
137
138
  ...t,
138
139
  dangerouslySetInnerHTML: { __html: l }
139
140
  });
140
- }, ge = {
141
+ }, ye = {
141
142
  type: "CustomHTML",
142
143
  label: "web_blocks.custom_html",
143
144
  category: "core",
144
- icon: H,
145
+ icon: q,
145
146
  group: "advanced",
146
147
  ...u({
147
148
  properties: {
@@ -153,11 +154,11 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
153
154
  }
154
155
  }
155
156
  })
156
- }, ye = (e) => {
157
+ }, me = (e) => {
157
158
  const { blockProps: o, styles: t, backgroundImage: l } = e;
158
159
  let n = {};
159
- return l && (n = { backgroundImage: `url(${l})` }), m.createElement("div", { ...o, ...t, style: n });
160
- }, me = {
160
+ return l && (n = { backgroundImage: `url(${l})` }), h.createElement("div", { ...o, ...t, style: n });
161
+ }, he = {
161
162
  type: "EmptyBox",
162
163
  label: "Empty Box",
163
164
  category: "core",
@@ -173,18 +174,18 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
173
174
  }
174
175
  }
175
176
  })
176
- }, he = (e) => {
177
+ }, fe = (e) => {
177
178
  const { blockProps: o, styles: t, content: l, tag: n = "h1", children: r = null } = e;
178
- return r ? m.createElement(n, { ...t, ...o }, r) : m.createElement(n, {
179
+ return r ? h.createElement(n, { ...t, ...o }, r) : h.createElement(n, {
179
180
  ...t,
180
181
  ...o,
181
182
  dangerouslySetInnerHTML: { __html: l }
182
183
  });
183
- }, fe = {
184
+ }, be = {
184
185
  type: "Heading",
185
186
  label: "web_blocks.heading",
186
187
  category: "core",
187
- icon: q,
188
+ icon: F,
188
189
  group: "typography",
189
190
  ...u({
190
191
  properties: {
@@ -206,18 +207,18 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
206
207
  aiProps: ["content"],
207
208
  i18nProps: ["content"],
208
209
  canAcceptBlock: (e) => e === "Span" || e === "Text"
209
- }, be = (e) => {
210
+ }, ke = (e) => {
210
211
  const { blockProps: o, styles: t, content: l } = e;
211
- return te(e.children) ? m.createElement("p", {
212
+ return oe(e.children) ? h.createElement("p", {
212
213
  ...t,
213
214
  ...o,
214
215
  dangerouslySetInnerHTML: { __html: l }
215
- }) : m.createElement("p", { ...t, ...o }, e.children);
216
- }, ke = {
216
+ }) : h.createElement("p", { ...t, ...o }, e.children);
217
+ }, xe = {
217
218
  type: "Paragraph",
218
219
  label: "Paragraph",
219
220
  category: "core",
220
- icon: F,
221
+ icon: G,
221
222
  group: "typography",
222
223
  ...u({
223
224
  properties: {
@@ -235,14 +236,36 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
235
236
  i18nProps: ["content"],
236
237
  aiProps: ["content"],
237
238
  canAcceptBlock: (e) => e === "Span" || e === "Link" || e === "Text"
238
- }, xe = (e) => {
239
+ }, we = (e) => {
240
+ const { blockProps: o, content: t, styles: l } = e;
241
+ return /* @__PURE__ */ s.jsx("div", { className: "max-w-full", children: /* @__PURE__ */ s.jsx("div", { ...o, ...l, dangerouslySetInnerHTML: { __html: t } }) });
242
+ }, ve = {
243
+ type: "RichText",
244
+ label: "Rich Text",
245
+ category: "core",
246
+ icon: U,
247
+ group: "typography",
248
+ ...u({
249
+ properties: {
250
+ styles: c(""),
251
+ content: {
252
+ type: "string",
253
+ title: "Content",
254
+ default: "<p>This is a rich text block. You can add text, and other content here.</p>",
255
+ ui: { "ui:widget": "richtext" }
256
+ }
257
+ }
258
+ }),
259
+ aiProps: ["content"],
260
+ i18nProps: ["content"]
261
+ }, Be = (e) => {
239
262
  const { blockProps: o, styles: t, content: l, children: n = null, tag: r } = e;
240
- return n ? m.createElement("span", { ...t, ...o }, n) : m.createElement(r || "span", {
263
+ return n ? h.createElement("span", { ...t, ...o }, n) : h.createElement(r || "span", {
241
264
  ...t,
242
265
  ...o,
243
266
  dangerouslySetInnerHTML: { __html: l || "" }
244
267
  });
245
- }, we = {
268
+ }, _e = {
246
269
  type: "Span",
247
270
  label: "Span",
248
271
  category: "core",
@@ -261,248 +284,177 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
261
284
  aiProps: ["content"],
262
285
  i18nProps: ["content"],
263
286
  canAcceptBlock: () => !0
264
- }, ve = (e) => {
265
- const { blockProps: o, content: t, styles: l } = e;
266
- return /* @__PURE__ */ s.jsx("div", { className: "max-w-full", children: /* @__PURE__ */ s.jsx("div", { ...o, ...l, dangerouslySetInnerHTML: { __html: t } }) });
267
- }, Be = {
268
- type: "RichText",
269
- label: "Rich Text",
287
+ };
288
+ function Le(e) {
289
+ return H({ tag: "svg", attr: { version: "1.1", viewBox: "0 0 32 32" }, child: [{ tag: "path", attr: { d: "M4.698 3.419l2.057 23.073 9.231 2.563 9.256-2.566 2.059-23.069h-22.604zM13.226 9.394l-0.409 4.441 9.671 0.001-0.069 0.76-0.665 7.45-0.042 0.478-5.804 1.609-5.796-1.609-0.396-4.443h2.84l0.202 2.257 3.154 0.85 3.156-0.852 0.328-3.67-9.671-0.001 0.069-0.76 0.665-7.45 0.209-2.086h11.287l0.131 1.598 0.403 4.453h-2.841l-0.262-2.922-2.889-0.174h-0.515v-0.004l-2.755 0.074z" }, child: [] }] })(e);
290
+ }
291
+ const Ie = (e) => {
292
+ const { scripts: o, inBuilder: t, blockProps: l } = e;
293
+ return t ? /* @__PURE__ */ s.jsx("div", { ...l, children: /* @__PURE__ */ s.jsx("div", { className: L("pointer-events-none flex flex-col items-center justify-center p-2", ""), children: /* @__PURE__ */ s.jsx("div", { className: "h-full w-full rounded bg-gray-200 p-1 dark:bg-gray-800", children: /* @__PURE__ */ s.jsx("p", { className: "text-left text-xs text-gray-400", children: "Scripts will be only executed in preview and live mode. Place your script at the bottom of the" }) }) }) }) : /* @__PURE__ */ s.jsx("div", { dangerouslySetInnerHTML: { __html: o } });
294
+ }, Ce = {
295
+ type: "CustomScript",
296
+ label: "web_blocks.custom_script",
270
297
  category: "core",
271
- icon: G,
272
- group: "typography",
298
+ icon: Le,
299
+ group: "advanced",
273
300
  ...u({
274
301
  properties: {
275
- styles: c(""),
276
- content: {
302
+ scripts: {
277
303
  type: "string",
278
- title: "Content",
279
- default: "<p>This is a rich text block. You can add text, and other content here.</p>",
280
- ui: { "ui:widget": "richtext" }
304
+ title: "Script",
305
+ default: "",
306
+ format: "code",
307
+ placeholder: "<script>console.log('Hello, world!');<\/script>"
281
308
  }
282
309
  }
283
- }),
284
- aiProps: ["content"],
285
- i18nProps: ["content"]
286
- }, _e = (e) => {
287
- const { blockProps: o, link: t, children: l, styles: n, inBuilder: r, content: i } = e;
288
- let a = {};
289
- return !l && k(i) && (a = { minHeight: "50px", display: "flex", alignItems: "center", justifyContent: "center" }), r ? l ? /* @__PURE__ */ s.jsx("span", { ...o, style: a, ...n, children: l }) : m.createElement(
290
- "span",
291
- {
292
- ...o,
293
- ...n,
294
- style: a
295
- },
296
- i
297
- ) : l ? /* @__PURE__ */ s.jsx("a", { href: (t == null ? void 0 : t.href) || "#/", target: t == null ? void 0 : t.target, ...o, ...n, children: l }) : m.createElement(
298
- "a",
299
- {
300
- ...o,
301
- ...n,
302
- href: (t == null ? void 0 : t.href) || "#",
303
- target: (t == null ? void 0 : t.target) || "_self"
304
- },
305
- i
306
- );
307
- }, Le = {
308
- type: "Link",
309
- label: "Link",
310
+ })
311
+ }, je = (e) => /* @__PURE__ */ s.jsxs("div", { ...e.blockProps, ...e.styles, children: [
312
+ e.mode,
313
+ e.children
314
+ ] }), Pe = (e) => e.mode === "dark" ? null : /* @__PURE__ */ s.jsx("button", { ...e.blockProps, ...e.styles, children: e.children });
315
+ p(Pe, {
316
+ type: "DarkModeButton",
317
+ label: "Dark Mode Button",
310
318
  category: "core",
311
- icon: U,
312
- group: "basic",
319
+ icon: D,
320
+ group: "advanced",
321
+ hidden: !0,
313
322
  ...u({
314
323
  properties: {
315
- styles: c(""),
316
- content: {
317
- type: "string",
318
- default: "Link goes here",
319
- title: "Content"
320
- },
321
- link: {
322
- type: "object",
323
- properties: {
324
- type: { type: "string" },
325
- href: { type: "string" },
326
- target: { type: "string" }
327
- },
328
- default: {
329
- type: "url",
330
- href: "",
331
- target: "_self"
332
- },
333
- ui: {
334
- "ui:field": "link"
335
- }
336
- }
324
+ mode: _("DarkModeSwitcher", "mode"),
325
+ styles: C("")
337
326
  }
338
- }),
339
- aiProps: ["content"],
340
- i18nProps: ["content"],
341
- canAcceptBlock: (e) => e !== "Link"
342
- }, A = (e, ...o) => ({
343
- ...e,
344
- className: _(e.className, ...o)
345
- }), Ie = (e) => {
346
- const { blockProps: o, children: t, styles: l, inBuilder: n, content: r, href: i } = e, { hrefType: a, autoplay: d, maxWidth: y, backdropColor: h, galleryName: b } = e, g = A(l, "cb-lightbox");
347
- if (!t && k(l == null ? void 0 : l.className) && k(r))
348
- return /* @__PURE__ */ s.jsx(w, { inBuilder: n });
349
- if (n)
350
- return t ? /* @__PURE__ */ s.jsx("span", { ...o, ...g, children: t }) : m.createElement("span", {
351
- ...o,
352
- ...g,
353
- dangerouslySetInnerHTML: { __html: r }
354
- });
355
- const x = {};
356
- return a !== "image" && (x["data-vbtype"] = a), d && (x["data-autoplay"] = "true"), y && (x["data-maxwidth"] = y + "px"), h && (x["data-overlay"] = h), b && (x["data-gall"] = b), t ? /* @__PURE__ */ s.jsx("a", { ...x, href: i || "#/", ...o, ...g, children: t }) : m.createElement("a", {
357
- ...o,
358
- ...g,
359
- ...x,
360
- href: i || "#",
361
- dangerouslySetInnerHTML: { __html: r }
362
- });
363
- }, Ce = {
364
- type: "LightBoxLink",
365
- label: "Lightbox Link",
327
+ })
328
+ });
329
+ const Se = (e) => e.mode === "light" ? null : /* @__PURE__ */ s.jsx("button", { ...e.blockProps, ...e.styles, children: e.children });
330
+ p(Se, {
331
+ type: "LightModeButton",
332
+ label: "Light Mode Button",
366
333
  category: "core",
367
- icon: E,
368
- group: "basic",
334
+ icon: V,
335
+ group: "advanced",
336
+ hidden: !0,
369
337
  ...u({
370
338
  properties: {
371
- styles: c(""),
372
- content: {
373
- type: "string",
374
- title: "Content",
375
- default: "Link text or drop blocks inside"
376
- },
377
- hrefType: {
378
- type: "string",
379
- title: "Type",
380
- default: "image",
381
- enum: ["image", "video", "iframe", "inline", "ajax"],
382
- enumNames: ["Image", "Video", "Iframe", "Inline", "Ajax"]
383
- },
384
- href: {
385
- type: "string",
386
- title: "Href",
387
- default: ""
388
- },
389
- autoplay: {
390
- type: "boolean",
391
- title: "Autoplay (Video only)",
392
- default: !1
393
- },
394
- maxWidth: {
395
- type: "number",
396
- title: "Max Width",
397
- default: ""
398
- },
399
- backdropColor: {
400
- type: "string",
401
- title: "Backdrop Color",
402
- default: ""
403
- },
404
- galleryName: {
339
+ mode: _("DarkModeSwitcher", "mode"),
340
+ styles: C(""),
341
+ fake: {
405
342
  type: "string",
406
- title: "Gallery Name",
407
343
  default: ""
408
344
  }
409
- },
410
- dependencies: {
411
- autoplay: ["hrefType", "video"]
412
345
  }
413
- }),
414
- i18nProps: ["content"],
415
- aiProps: ["content"],
416
- canAcceptBlock: (e) => e !== "Link" && e !== "LightBoxLink"
417
- }, je = (e) => {
418
- const { blockProps: o, children: t, listType: l, styles: n, tag: r, inBuilder: i } = e, a = _(f(n, "className", ""), l);
419
- return !t && k(n == null ? void 0 : n.className) ? /* @__PURE__ */ s.jsx(w, { inBuilder: i }) : m.createElement(
420
- r || (l === "list-decimal" ? "ol" : "ul"),
421
- { ...o, ...n, className: a },
422
- t
423
- );
424
- }, Pe = {
425
- type: "List",
426
- label: "web_blocks.list",
427
- icon: V,
346
+ })
347
+ });
348
+ const Me = {
349
+ type: "DarkModeSwitcher",
350
+ label: "web_blocks.dark_mode",
428
351
  category: "core",
429
- group: "basic",
352
+ icon: D,
353
+ group: "advanced",
354
+ wrapper: !0,
430
355
  ...u({
431
356
  properties: {
432
- styles: c(""),
433
- listType: {
357
+ mode: {
358
+ title: "Mode",
434
359
  type: "string",
435
- title: "List Type",
436
- default: "list-none",
437
- oneOf: [
438
- { enum: ["list-none"], title: "List None" },
439
- { enum: ["list-disc"], title: "Disc" },
440
- { enum: ["list-decimal"], title: "Decimal" }
441
- ]
442
- }
360
+ enum: ["dark", "light"],
361
+ default: "light"
362
+ },
363
+ styles: C("")
443
364
  }
444
365
  }),
445
- canAcceptBlock: (e) => e === "ListItem",
446
- blocks: [
447
- { _type: "List", _id: "a", listType: "list-none", styles: "#styles:," },
366
+ blocks: () => [
367
+ { _id: "ultqCh", _type: "DarkModeSwitcher", mode: "light", styles: "#styles:,", _name: "Dark Mode Theme" },
448
368
  {
449
- _type: "ListItem",
450
- _id: "b",
451
- _parent: "a",
452
- styles: "#styles:,",
453
- content: "Item 1"
369
+ _id: "vroabi",
370
+ _parent: "ultqCh",
371
+ _type: "LightModeButton",
372
+ // @ts-ignore
373
+ styles_attrs: { type: "button", "x-on:click": "darkMode = 'dark'", "x-show": "darkMode === 'light'" },
374
+ styles: "#styles:,bg-white dark:bg-black font-medium text-gray-800 rounded-full hover:bg-gray-200 focus:outline-none focus:bg-gray-200 dark:text-neutral-200 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800",
375
+ _name: "Dark Mode Btn"
454
376
  },
455
377
  {
456
- _type: "ListItem",
457
- _id: "c",
458
- _parent: "a",
459
- styles: "#styles:,",
460
- content: "Item 2"
378
+ _id: "nltBrv",
379
+ _parent: "vroabi",
380
+ _type: "Icon",
381
+ styles: "#styles:, shrink-0 size-4",
382
+ icon: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'></path></svg>"
461
383
  },
462
384
  {
463
- _type: "ListItem",
464
- _id: "d",
465
- _parent: "a",
466
- styles: "#styles:,",
467
- content: "Item 3"
385
+ _id: "gesydi",
386
+ _parent: "ultqCh",
387
+ _type: "DarkModeButton",
388
+ // @ts-ignore
389
+ styles_attrs: { type: "button", "x-on:click": "darkMode = 'light'", "x-show": "darkMode === 'dark'" },
390
+ styles: "#styles:,bg-white hidden dark:bg-black font-medium text-gray-800 rounded-full hover:bg-gray-200 focus:outline-none focus:bg-gray-200 dark:text-neutral-200 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800",
391
+ _name: "Light Mode Btn"
392
+ },
393
+ {
394
+ _id: "AdDwBC",
395
+ _parent: "gesydi",
396
+ _type: "Icon",
397
+ styles: "#styles:, shrink-0 size-4",
398
+ icon: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='4'></circle><path d='M12 2v2'></path><path d='M12 20v2'></path><path d='m4.93 4.93 1.41 1.41'></path><path d='m17.66 17.66 1.41 1.41'></path><path d='M2 12h2'></path><path d='M20 12h2'></path><path d='m6.34 17.66-1.41 1.41'></path><path d='m19.07 4.93-1.41 1.41'></path></svg>"
468
399
  }
469
400
  ]
470
- }, Se = (e) => {
471
- const { blockProps: o, content: t, styles: l, children: n, tag: r } = e;
472
- return n ? m.createElement(r || "li", { ...l, ...o }, n) : m.createElement(r || "li", {
473
- ...l,
474
- ...o,
475
- dangerouslySetInnerHTML: { __html: t }
476
- });
477
- }, Me = {
478
- type: "ListItem",
479
- label: "List Item",
480
- icon: O,
401
+ }, Ne = (e) => {
402
+ const { blockProps: o, styles: t } = e;
403
+ return v("hr", { ...t, ...o });
404
+ }, $e = {
405
+ type: "Divider",
406
+ label: "web_blocks.divider",
481
407
  category: "core",
408
+ icon: O,
482
409
  group: "basic",
483
410
  ...u({
484
411
  properties: {
485
- styles: c(""),
486
- content: {
412
+ styles: c("bg-gray-900 h-0.5 py-2 my-1")
413
+ }
414
+ })
415
+ }, De = (e) => {
416
+ const { blockProps: o, inBuilder: t, children: l, globalBlock: n } = e;
417
+ return t && !n ? /* @__PURE__ */ s.jsxs(
418
+ "div",
419
+ {
420
+ className: "flex flex-col items-center justify-center py-4 bg-gray-100 rounded-lg gap-y-1 dark:bg-gray-800",
421
+ ...o,
422
+ children: [
423
+ /* @__PURE__ */ s.jsxs("h1", { children: [
424
+ "Global Block - ",
425
+ n
426
+ ] }),
427
+ /* @__PURE__ */ s.jsx("p", { children: "Choose a block from the sidebar to add it to this page." })
428
+ ]
429
+ }
430
+ ) : h.createElement("span", { ...o }, l);
431
+ }, Te = {
432
+ type: "GlobalBlock",
433
+ label: "Global Block",
434
+ icon: se,
435
+ category: "core",
436
+ group: "advanced",
437
+ ...u({
438
+ properties: {
439
+ globalBlock: {
487
440
  type: "string",
488
- default: "List item",
489
- title: "Content",
441
+ title: "Global Block",
442
+ default: "",
490
443
  ui: {
491
- "ui:widget": "textarea"
444
+ "ui:widget": "hidden"
492
445
  }
493
446
  }
494
447
  }
495
- }),
496
- i18nProps: ["content"],
497
- aiProps: ["content"],
498
- canAcceptBlock: (e) => e !== "ListItem",
499
- canBeNested: (e) => e === "List"
500
- }, Ne = (e) => {
501
- const { blockProps: o, icon: t, styles: l, width: n, inBuilder: r, height: i } = e, a = A(l, "");
448
+ })
449
+ }, R = (e, ...o) => ({
450
+ ...e,
451
+ className: L(e.className, ...o)
452
+ }), Ee = (e) => {
453
+ const { blockProps: o, icon: t, styles: l, width: n, inBuilder: r, height: i } = e, a = R(l, "");
502
454
  if (k(t))
503
455
  return /* @__PURE__ */ s.jsx(w, { inBuilder: r, className: "h-8 w-14" });
504
456
  const d = t.replace(/<svg /g, '<svg class="w-[inherit] h-[inherit]" ');
505
- return m.createElement("span", {
457
+ return h.createElement("span", {
506
458
  ...o,
507
459
  ...a,
508
460
  style: {
@@ -511,7 +463,7 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
511
463
  },
512
464
  dangerouslySetInnerHTML: { __html: d }
513
465
  });
514
- }, Ee = {
466
+ }, Ae = {
515
467
  type: "Icon",
516
468
  label: "web_blocks.icon",
517
469
  category: "core",
@@ -538,7 +490,7 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
538
490
  }
539
491
  }
540
492
  })
541
- }, $e = (e) => {
493
+ }, Re = (e) => {
542
494
  const { blockProps: o, image: t, mobileImage: l, styles: n, alt: r, height: i, width: a, lazyLoading: d } = e;
543
495
  return k(t) ? /* @__PURE__ */ s.jsx(w, { className: "h-36" }) : /* @__PURE__ */ s.jsxs("picture", { children: [
544
496
  l && /* @__PURE__ */ s.jsx("source", { srcSet: l, media: "(max-width: 480px)" }),
@@ -555,11 +507,11 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
555
507
  }
556
508
  )
557
509
  ] });
558
- }, De = {
510
+ }, ze = {
559
511
  type: "Image",
560
512
  label: "Image",
561
513
  category: "core",
562
- icon: E,
514
+ icon: T,
563
515
  group: "media",
564
516
  ...u({
565
517
  properties: {
@@ -603,259 +555,218 @@ const w = ({ className: e = "", inBuilder: o }) => o ? /* @__PURE__ */ s.jsx("di
603
555
  }),
604
556
  aiProps: ["alt"],
605
557
  i18nProps: ["alt"]
606
- }, P = /^(https?:\/\/)?(www\.)?youtube\.com\/(watch\?v=|embed\/)([a-zA-Z0-9_-]{11})/, S = /^(https?:\/\/)?(www\.)?player.vimeo\.com/, M = /^(https?:\/\/)?(www\.)?dailymotion\.com\/(video|embed\/video)\/([a-zA-Z0-9_-]+)/, Te = (e) => {
607
- if (P.test(e)) {
608
- const o = e.match(P);
609
- return o ? `https://www.youtube.com/embed/${o[4]}` : e;
610
- }
611
- if (S.test(e)) {
612
- const o = e.match(S);
613
- return o ? `https://player.vimeo.com/video/${o[3]}` : e;
614
- }
615
- if (M.test(e)) {
616
- const o = e.match(M);
617
- return o ? `https://www.dailymotion.com/embed/video/${o[4]}` : e;
618
- }
619
- return null;
620
- }, Ae = m.memo((e) => {
621
- const { blockProps: o, inBuilder: t, styles: l, url: n, controls: r } = e, i = f(r, "autoPlay", !1), a = f(r, "controls", !1), d = i || f(r, "muted", !0), y = f(r, "loop", !1);
622
- if (k(n)) return /* @__PURE__ */ s.jsx(w, { inBuilder: t, className: "h-36" });
623
- let h = Te(n), b = null;
624
- if (h) {
625
- if (!k(h)) {
626
- const g = [];
627
- g.push(`autoplay=${i ? 1 : 0}`), g.push(`controls=${r ? 1 : 0}`), g.push(`mute=${d ? 1 : 0}&muted=${d ? 1 : 0}`), g.push(`loop=${y ? 1 : 0}`), h = `${h}?${g.join("&")}`;
628
- }
629
- b = m.createElement("iframe", {
558
+ }, He = (e) => {
559
+ const { blockProps: o, children: t, styles: l, inBuilder: n, content: r, href: i } = e, { hrefType: a, autoplay: d, maxWidth: y, backdropColor: m, galleryName: b } = e, g = R(l, "cb-lightbox");
560
+ if (!t && k(l == null ? void 0 : l.className) && k(r))
561
+ return /* @__PURE__ */ s.jsx(w, { inBuilder: n });
562
+ if (n)
563
+ return t ? /* @__PURE__ */ s.jsx("span", { ...o, ...g, children: t }) : h.createElement("span", {
630
564
  ...o,
631
- className: "absolute inset-0 w-full h-full",
632
- src: h,
633
- allow: t ? "" : "autoplay *; fullscreen *",
634
- allowFullScreen: !0,
635
- frameBorder: 0
565
+ ...g,
566
+ dangerouslySetInnerHTML: { __html: r }
636
567
  });
637
- } else
638
- b = m.createElement("video", {
568
+ const x = {};
569
+ return a !== "image" && (x["data-vbtype"] = a), d && (x["data-autoplay"] = "true"), y && (x["data-maxwidth"] = y + "px"), m && (x["data-overlay"] = m), b && (x["data-gall"] = b), t ? /* @__PURE__ */ s.jsx("a", { ...x, href: i || "#/", ...o, ...g, children: t }) : h.createElement("a", {
570
+ ...o,
571
+ ...g,
572
+ ...x,
573
+ href: i || "#",
574
+ dangerouslySetInnerHTML: { __html: r }
575
+ });
576
+ }, qe = {
577
+ type: "LightBoxLink",
578
+ label: "Lightbox Link",
579
+ category: "core",
580
+ icon: T,
581
+ group: "basic",
582
+ ...u({
583
+ properties: {
584
+ styles: c(""),
585
+ content: {
586
+ type: "string",
587
+ title: "Content",
588
+ default: "Link text or drop blocks inside"
589
+ },
590
+ hrefType: {
591
+ type: "string",
592
+ title: "Type",
593
+ default: "image",
594
+ enum: ["image", "video", "iframe", "inline", "ajax"],
595
+ enumNames: ["Image", "Video", "Iframe", "Inline", "Ajax"]
596
+ },
597
+ href: {
598
+ type: "string",
599
+ title: "Href",
600
+ default: ""
601
+ },
602
+ autoplay: {
603
+ type: "boolean",
604
+ title: "Autoplay (Video only)",
605
+ default: !1
606
+ },
607
+ maxWidth: {
608
+ type: "number",
609
+ title: "Max Width",
610
+ default: ""
611
+ },
612
+ backdropColor: {
613
+ type: "string",
614
+ title: "Backdrop Color",
615
+ default: ""
616
+ },
617
+ galleryName: {
618
+ type: "string",
619
+ title: "Gallery Name",
620
+ default: ""
621
+ }
622
+ },
623
+ dependencies: {
624
+ autoplay: ["hrefType", "video"]
625
+ }
626
+ }),
627
+ i18nProps: ["content"],
628
+ aiProps: ["content"],
629
+ canAcceptBlock: (e) => e !== "Link" && e !== "LightBoxLink"
630
+ }, Fe = (e) => {
631
+ const { blockProps: o, link: t, children: l, styles: n, inBuilder: r, content: i } = e;
632
+ let a = {};
633
+ return !l && k(i) && (a = { minHeight: "50px", display: "flex", alignItems: "center", justifyContent: "center" }), r ? l ? /* @__PURE__ */ s.jsx("span", { ...o, style: a, ...n, children: l }) : v(
634
+ "span",
635
+ {
639
636
  ...o,
640
- className: "absolute inset-0 w-full h-full",
641
- src: n,
642
- controls: a,
643
- muted: d,
644
- autoPlay: t ? !1 : i,
645
- loop: y
646
- });
647
- return /* @__PURE__ */ s.jsx("div", { ...oe(l, ["className"]), children: /* @__PURE__ */ s.jsxs("div", { className: "relative w-full overflow-hidden", style: { paddingBottom: "56.25%" }, children: [
648
- t ? /* @__PURE__ */ s.jsx("div", { ...o, ...le(l, ["className"]), className: "absolute inset-0 z-20 h-full w-full" }) : null,
649
- b
650
- ] }) });
651
- }), Re = {
652
- type: "Video",
653
- label: "Video",
637
+ ...n,
638
+ style: a
639
+ },
640
+ i
641
+ ) : l ? /* @__PURE__ */ s.jsx("a", { href: (t == null ? void 0 : t.href) || "#/", target: t == null ? void 0 : t.target, ...o, ...n, children: l }) : v(
642
+ "a",
643
+ {
644
+ ...o,
645
+ ...n,
646
+ href: (t == null ? void 0 : t.href) || "#",
647
+ target: (t == null ? void 0 : t.target) || "_self"
648
+ },
649
+ i
650
+ );
651
+ }, Ge = {
652
+ type: "Link",
653
+ label: "Link",
654
654
  category: "core",
655
655
  icon: X,
656
- group: "media",
656
+ group: "basic",
657
657
  ...u({
658
658
  properties: {
659
659
  styles: c(""),
660
- url: {
660
+ content: {
661
661
  type: "string",
662
- title: "Video URL",
663
- default: "https://www.youtube.com/watch?v=9xwazD5SyVg&ab_channel=MaximilianMustermann"
662
+ default: "Link goes here",
663
+ title: "Content"
664
664
  },
665
- controls: {
665
+ link: {
666
666
  type: "object",
667
- title: "Controls",
667
+ properties: {
668
+ type: { type: "string" },
669
+ href: { type: "string" },
670
+ target: { type: "string" }
671
+ },
668
672
  default: {
669
- autoplay: !1,
670
- controls: !0,
671
- loop: !1,
672
- muted: !1
673
+ type: "url",
674
+ href: "",
675
+ target: "_self"
673
676
  },
674
- properties: {
675
- autoplay: {
676
- type: "boolean",
677
- title: "Autoplay",
678
- default: !1
679
- },
680
- controls: {
681
- type: "boolean",
682
- title: "Show Controls",
683
- default: !0
684
- },
685
- loop: {
686
- type: "boolean",
687
- title: "Loop Video",
688
- default: !1
689
- },
690
- muted: {
691
- type: "boolean",
692
- title: "Muted",
693
- default: !1
694
- }
677
+ ui: {
678
+ "ui:field": "link"
695
679
  }
696
680
  }
697
681
  }
698
682
  }),
699
- i18nProps: ["url"]
700
- }, ze = (e) => {
701
- const { blockProps: o, styles: t } = e;
702
- return m.createElement("hr", { ...t, ...o });
703
- }, He = {
704
- type: "Divider",
705
- label: "web_blocks.divider",
706
- category: "core",
683
+ aiProps: ["content"],
684
+ i18nProps: ["content"],
685
+ canAcceptBlock: (e) => e !== "Link"
686
+ }, Ue = (e) => {
687
+ const { blockProps: o, children: t, listType: l, styles: n, tag: r, inBuilder: i } = e, a = L(f(n, "className", ""), l);
688
+ return !t && k(n == null ? void 0 : n.className) ? /* @__PURE__ */ s.jsx(w, { inBuilder: i }) : h.createElement(
689
+ r || (l === "list-decimal" ? "ol" : "ul"),
690
+ { ...o, ...n, className: a },
691
+ t
692
+ );
693
+ }, Ve = {
694
+ type: "List",
695
+ label: "web_blocks.list",
707
696
  icon: Y,
708
- group: "basic",
709
- ...u({
710
- properties: {
711
- styles: c("bg-gray-900 h-0.5 py-2 my-1")
712
- }
713
- })
714
- };
715
- function qe(e) {
716
- return z({ tag: "svg", attr: { version: "1.1", viewBox: "0 0 32 32" }, child: [{ tag: "path", attr: { d: "M4.698 3.419l2.057 23.073 9.231 2.563 9.256-2.566 2.059-23.069h-22.604zM13.226 9.394l-0.409 4.441 9.671 0.001-0.069 0.76-0.665 7.45-0.042 0.478-5.804 1.609-5.796-1.609-0.396-4.443h2.84l0.202 2.257 3.154 0.85 3.156-0.852 0.328-3.67-9.671-0.001 0.069-0.76 0.665-7.45 0.209-2.086h11.287l0.131 1.598 0.403 4.453h-2.841l-0.262-2.922-2.889-0.174h-0.515v-0.004l-2.755 0.074z" }, child: [] }] })(e);
717
- }
718
- const Fe = (e) => {
719
- const { scripts: o, inBuilder: t, blockProps: l } = e;
720
- return t ? /* @__PURE__ */ s.jsx("div", { ...l, children: /* @__PURE__ */ s.jsx("div", { className: _("pointer-events-none flex flex-col items-center justify-center p-2", ""), children: /* @__PURE__ */ s.jsx("div", { className: "h-full w-full rounded bg-gray-200 p-1 dark:bg-gray-800", children: /* @__PURE__ */ s.jsx("p", { className: "text-left text-xs text-gray-400", children: "Scripts will be only executed in preview and live mode. Place your script at the bottom of the" }) }) }) }) : /* @__PURE__ */ s.jsx("div", { dangerouslySetInnerHTML: { __html: o } });
721
- }, Ge = {
722
- type: "CustomScript",
723
- label: "web_blocks.custom_script",
724
697
  category: "core",
725
- icon: qe,
726
- group: "advanced",
698
+ group: "basic",
727
699
  ...u({
728
700
  properties: {
729
- scripts: {
701
+ styles: c(""),
702
+ listType: {
730
703
  type: "string",
731
- title: "Script",
732
- default: "",
733
- format: "code",
734
- placeholder: "<script>console.log('Hello, world!');<\/script>"
735
- }
736
- }
737
- })
738
- }, Ue = (e) => /* @__PURE__ */ s.jsxs("div", { ...e.blockProps, ...e.styles, children: [
739
- e.mode,
740
- e.children
741
- ] }), Ve = (e) => e.mode === "dark" ? null : /* @__PURE__ */ s.jsx("button", { ...e.blockProps, ...e.styles, children: e.children });
742
- p(Ve, {
743
- type: "DarkModeButton",
744
- label: "Dark Mode Button",
745
- category: "core",
746
- icon: $,
747
- group: "advanced",
748
- hidden: !0,
749
- ...u({
750
- properties: {
751
- mode: B("DarkModeSwitcher", "mode"),
752
- styles: I("")
753
- }
754
- })
755
- });
756
- const Oe = (e) => e.mode === "light" ? null : /* @__PURE__ */ s.jsx("button", { ...e.blockProps, ...e.styles, children: e.children });
757
- p(Oe, {
758
- type: "LightModeButton",
759
- label: "Light Mode Button",
760
- category: "core",
761
- icon: Z,
762
- group: "advanced",
763
- hidden: !0,
764
- ...u({
765
- properties: {
766
- mode: B("DarkModeSwitcher", "mode"),
767
- styles: I("")
768
- }
769
- })
770
- });
771
- const We = {
772
- type: "DarkModeSwitcher",
773
- label: "web_blocks.dark_mode",
774
- category: "core",
775
- icon: $,
776
- group: "advanced",
777
- wrapper: !0,
778
- ...u({
779
- properties: {
780
- mode: {
781
- title: "Mode",
782
- type: "string",
783
- enum: ["dark", "light"],
784
- default: "light"
785
- },
786
- styles: I("")
704
+ title: "List Type",
705
+ default: "list-none",
706
+ oneOf: [
707
+ { enum: ["list-none"], title: "List None" },
708
+ { enum: ["list-disc"], title: "Disc" },
709
+ { enum: ["list-decimal"], title: "Decimal" }
710
+ ]
711
+ }
787
712
  }
788
713
  }),
789
- blocks: () => [
790
- { _id: "ultqCh", _type: "DarkModeSwitcher", mode: "light", styles: "#styles:,", _name: "Dark Mode Theme" },
791
- {
792
- _id: "vroabi",
793
- _parent: "ultqCh",
794
- _type: "LightModeButton",
795
- // @ts-ignore
796
- styles_attrs: { type: "button", "x-on:click": "darkMode = 'dark'", "x-show": "darkMode === 'light'" },
797
- styles: "#styles:,bg-white dark:bg-black font-medium text-gray-800 rounded-full hover:bg-gray-200 focus:outline-none focus:bg-gray-200 dark:text-neutral-200 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800",
798
- _name: "Dark Mode Btn"
799
- },
714
+ canAcceptBlock: (e) => e === "ListItem",
715
+ blocks: [
716
+ { _type: "List", _id: "a", listType: "list-none", styles: "#styles:," },
800
717
  {
801
- _id: "nltBrv",
802
- _parent: "vroabi",
803
- _type: "Icon",
804
- styles: "#styles:, shrink-0 size-4",
805
- icon: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'></path></svg>"
718
+ _type: "ListItem",
719
+ _id: "b",
720
+ _parent: "a",
721
+ styles: "#styles:,",
722
+ content: "Item 1"
806
723
  },
807
724
  {
808
- _id: "gesydi",
809
- _parent: "ultqCh",
810
- _type: "DarkModeButton",
811
- // @ts-ignore
812
- styles_attrs: { type: "button", "x-on:click": "darkMode = 'light'", "x-show": "darkMode === 'dark'" },
813
- styles: "#styles:,bg-white hidden dark:bg-black font-medium text-gray-800 rounded-full hover:bg-gray-200 focus:outline-none focus:bg-gray-200 dark:text-neutral-200 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800",
814
- _name: "Light Mode Btn"
725
+ _type: "ListItem",
726
+ _id: "c",
727
+ _parent: "a",
728
+ styles: "#styles:,",
729
+ content: "Item 2"
815
730
  },
816
731
  {
817
- _id: "AdDwBC",
818
- _parent: "gesydi",
819
- _type: "Icon",
820
- styles: "#styles:, shrink-0 size-4",
821
- icon: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='4'></circle><path d='M12 2v2'></path><path d='M12 20v2'></path><path d='m4.93 4.93 1.41 1.41'></path><path d='m17.66 17.66 1.41 1.41'></path><path d='M2 12h2'></path><path d='M20 12h2'></path><path d='m6.34 17.66-1.41 1.41'></path><path d='m19.07 4.93-1.41 1.41'></path></svg>"
732
+ _type: "ListItem",
733
+ _id: "d",
734
+ _parent: "a",
735
+ styles: "#styles:,",
736
+ content: "Item 3"
822
737
  }
823
738
  ]
824
- }, Xe = (e) => {
825
- const { blockProps: o, inBuilder: t, children: l, globalBlock: n } = e;
826
- return t && !n ? /* @__PURE__ */ s.jsxs(
827
- "div",
828
- {
829
- className: "flex flex-col items-center justify-center py-4 bg-gray-100 rounded-lg gap-y-1 dark:bg-gray-800",
830
- ...o,
831
- children: [
832
- /* @__PURE__ */ s.jsxs("h1", { children: [
833
- "Global Block - ",
834
- n
835
- ] }),
836
- /* @__PURE__ */ s.jsx("p", { children: "Choose a block from the sidebar to add it to this page." })
837
- ]
838
- }
839
- ) : m.createElement("span", { ...o }, l);
840
- }, Ye = {
841
- type: "GlobalBlock",
842
- label: "Global Block",
843
- icon: ne,
739
+ }, Oe = (e) => {
740
+ const { blockProps: o, content: t, styles: l, children: n, tag: r } = e;
741
+ return n ? h.createElement(r || "li", { ...l, ...o }, n) : h.createElement(r || "li", {
742
+ ...l,
743
+ ...o,
744
+ dangerouslySetInnerHTML: { __html: t }
745
+ });
746
+ }, We = {
747
+ type: "ListItem",
748
+ label: "List Item",
749
+ icon: Z,
844
750
  category: "core",
845
- group: "advanced",
751
+ group: "basic",
846
752
  ...u({
847
753
  properties: {
848
- globalBlock: {
754
+ styles: c(""),
755
+ content: {
849
756
  type: "string",
850
- title: "Global Block",
851
- default: "",
757
+ default: "List item",
758
+ title: "Content",
852
759
  ui: {
853
- "ui:widget": "hidden"
760
+ "ui:widget": "textarea"
854
761
  }
855
762
  }
856
763
  }
857
- })
858
- }, Ze = (e) => e.inBuilder || e.forceWrapper ? /* @__PURE__ */ s.jsx("span", { ...e.blockProps, children: e.content }) : `${e.content}`, Je = {
764
+ }),
765
+ i18nProps: ["content"],
766
+ aiProps: ["content"],
767
+ canAcceptBlock: (e) => e !== "ListItem",
768
+ canBeNested: (e) => e === "List"
769
+ }, Xe = (e) => e.inBuilder || e.forceWrapper ? /* @__PURE__ */ s.jsx("span", { ...e.blockProps, children: e.content }) : `${e.content}`, Ye = {
859
770
  type: "Text",
860
771
  label: "Text",
861
772
  hidden: !0,
@@ -873,81 +784,270 @@ const We = {
873
784
  }),
874
785
  aiProps: ["content"],
875
786
  i18nProps: ["content"]
876
- }, Ke = (e) => {
877
- const { blockProps: o, backgroundImage: t, children: l, styles: n, tag: r } = e;
878
- let i = {};
879
- return t && (i = { backgroundImage: `url(${t})` }), m.createElement(r || "div", { ...o, ...n, style: i }, l);
880
- }, Qe = {
881
- type: "Body",
882
- label: "Body",
787
+ }, S = /^(https?:\/\/)?(www\.)?youtube\.com\/(watch\?v=|embed\/)([a-zA-Z0-9_-]{11})/, M = /^(https?:\/\/)?(www\.)?player.vimeo\.com/, N = /^(https?:\/\/)?(www\.)?dailymotion\.com\/(video|embed\/video)\/([a-zA-Z0-9_-]+)/, Ze = (e) => {
788
+ if (S.test(e)) {
789
+ const o = e.match(S);
790
+ return o ? `https://www.youtube.com/embed/${o[4]}` : e;
791
+ }
792
+ if (M.test(e)) {
793
+ const o = e.match(M);
794
+ return o ? `https://player.vimeo.com/video/${o[3]}` : e;
795
+ }
796
+ if (N.test(e)) {
797
+ const o = e.match(N);
798
+ return o ? `https://www.dailymotion.com/embed/video/${o[4]}` : e;
799
+ }
800
+ return null;
801
+ }, Je = h.memo((e) => {
802
+ const { blockProps: o, inBuilder: t, styles: l, url: n, controls: r } = e, i = f(r, "autoPlay", !1), a = f(r, "controls", !1), d = i || f(r, "muted", !0), y = f(r, "loop", !1);
803
+ if (k(n)) return /* @__PURE__ */ s.jsx(w, { inBuilder: t, className: "h-36" });
804
+ let m = Ze(n), b = null;
805
+ if (m) {
806
+ if (!k(m)) {
807
+ const g = [];
808
+ g.push(`autoplay=${i ? 1 : 0}`), g.push(`controls=${r ? 1 : 0}`), g.push(`mute=${d ? 1 : 0}&muted=${d ? 1 : 0}`), g.push(`loop=${y ? 1 : 0}`), m = `${m}?${g.join("&")}`;
809
+ }
810
+ b = h.createElement("iframe", {
811
+ ...o,
812
+ className: "absolute inset-0 w-full h-full",
813
+ src: m,
814
+ allow: t ? "" : "autoplay *; fullscreen *",
815
+ allowFullScreen: !0,
816
+ frameBorder: 0
817
+ });
818
+ } else
819
+ b = h.createElement("video", {
820
+ ...o,
821
+ className: "absolute inset-0 w-full h-full",
822
+ src: n,
823
+ controls: a,
824
+ muted: d,
825
+ autoPlay: t ? !1 : i,
826
+ loop: y
827
+ });
828
+ return /* @__PURE__ */ s.jsx("div", { ...le(l, ["className"]), children: /* @__PURE__ */ s.jsxs("div", { className: "relative w-full overflow-hidden", style: { paddingBottom: "56.25%" }, children: [
829
+ t ? /* @__PURE__ */ s.jsx("div", { ...o, ...ne(l, ["className"]), className: "absolute inset-0 z-20 h-full w-full" }) : null,
830
+ b
831
+ ] }) });
832
+ }), Ke = {
833
+ type: "Video",
834
+ label: "Video",
883
835
  category: "core",
884
- group: "basic",
885
- hidden: !0,
836
+ icon: K,
837
+ group: "media",
886
838
  ...u({
887
839
  properties: {
888
- styles: c("font-body antialiased"),
889
- backgroundImage: {
840
+ styles: c(""),
841
+ url: {
890
842
  type: "string",
891
- title: "Image",
892
- default: "",
893
- ui: { "ui:widget": "image" }
843
+ title: "Video URL",
844
+ default: "https://www.youtube.com/watch?v=9xwazD5SyVg&ab_channel=MaximilianMustermann"
894
845
  },
895
- tag: {
896
- type: "string",
897
- default: "div",
898
- title: "Tag",
899
- oneOf: [
900
- { const: "div", title: "div" },
901
- { const: "header", title: "header" },
902
- { const: "footer", title: "footer" },
903
- { const: "section", title: "section" },
904
- { const: "article", title: "article" },
905
- { const: "aside", title: "aside" },
906
- { const: "main", title: "main" },
907
- { const: "nav", title: "nav" },
908
- { const: "figure", title: "figure" },
909
- { const: "details", title: "details" },
910
- { const: "summary", title: "summary" },
911
- { const: "dialog", title: "dialog" },
912
- { const: "strike", title: "strike" },
913
- { const: "caption", title: "caption" },
914
- { const: "legend", title: "legend" },
915
- { const: "figcaption", title: "figcaption" },
916
- { const: "mark", title: "mark" }
917
- ]
846
+ controls: {
847
+ type: "object",
848
+ title: "Controls",
849
+ default: {
850
+ autoplay: !1,
851
+ controls: !0,
852
+ loop: !1,
853
+ muted: !1
854
+ },
855
+ properties: {
856
+ autoplay: {
857
+ type: "boolean",
858
+ title: "Autoplay",
859
+ default: !1
860
+ },
861
+ controls: {
862
+ type: "boolean",
863
+ title: "Show Controls",
864
+ default: !0
865
+ },
866
+ loop: {
867
+ type: "boolean",
868
+ title: "Loop Video",
869
+ default: !1
870
+ },
871
+ muted: {
872
+ type: "boolean",
873
+ title: "Muted",
874
+ default: !1
875
+ }
876
+ }
918
877
  }
919
878
  }
920
879
  }),
921
- canAcceptBlock: () => !0,
922
- canDelete: () => !1,
923
- canMove: () => !1,
924
- canDuplicate: () => !1
925
- }, et = (e) => {
926
- const { blockProps: o, styles: t } = e;
927
- return m.createElement("br", { ...o, ...t });
928
- }, tt = {
929
- type: "LineBreak",
930
- label: "Line Break",
880
+ i18nProps: ["url"]
881
+ }, j = {
882
+ wrapper: { "x-data": "{ open: false }" },
883
+ button: { "x-on:click": "open = !open" },
884
+ menu: { "x-show": "open", "x-on:click.away": "open = false", "x-cloak": "", "x-transition": "" }
885
+ }, Qe = (e) => {
886
+ const { blockProps: o, content: t, icon: l, iconWidth: n, iconHeight: r, styles: i, show: a } = e;
887
+ return /* @__PURE__ */ s.jsxs("button", { ...o, ...i, ...j.button, children: [
888
+ t,
889
+ /* @__PURE__ */ s.jsx(
890
+ "span",
891
+ {
892
+ className: a ? "rotate-180" : "",
893
+ dangerouslySetInnerHTML: { __html: l },
894
+ style: { width: n, height: r }
895
+ }
896
+ )
897
+ ] });
898
+ };
899
+ p(Qe, {
900
+ type: "DropdownButton",
901
+ label: "Dropdown Button",
902
+ group: "advanced",
931
903
  category: "core",
904
+ hidden: !0,
905
+ canMove: () => !1,
906
+ canDelete: () => !1,
907
+ ...u({
908
+ properties: {
909
+ show: _("Dropdown", "showDropdown"),
910
+ content: { type: "string", title: "Title", default: "Menu Item" },
911
+ icon: { type: "string", title: "Icon", default: "", ui: { "ui:widget": "icon" } },
912
+ iconWidth: { type: "string", title: "Icon Width", default: "16px" },
913
+ iconHeight: { type: "string", title: "Icon Height", default: "16px" },
914
+ styles: c("flex items-center gap-2 px-4 py-1")
915
+ }
916
+ })
917
+ });
918
+ const et = (e) => {
919
+ const { blockProps: o, children: t, styles: l, show: n, inBuilder: r } = e;
920
+ return r && !n ? null : /* @__PURE__ */ s.jsx("div", { ...o, ...j.menu, ...l, children: t });
921
+ };
922
+ p(et, {
923
+ type: "DropdownContent",
924
+ label: "Dropdown Content",
932
925
  group: "basic",
933
926
  hidden: !0,
927
+ canMove: () => !1,
928
+ canDelete: () => !1,
929
+ canAcceptBlock: () => !0,
930
+ ...u({
931
+ properties: {
932
+ show: _("Dropdown", "showDropdown"),
933
+ styles: c("absolute left-0 p-2 w-80 mt-2 bg-white rounded-lg shadow-lg z-50")
934
+ }
935
+ })
936
+ });
937
+ const tt = (e) => {
938
+ const { blockProps: o, children: t, styles: l } = e;
939
+ return /* @__PURE__ */ s.jsx("div", { ...o, ...l, ...j.wrapper, children: t });
940
+ }, ot = {
941
+ type: "Dropdown",
942
+ label: "Dropdown",
943
+ group: "basic",
944
+ icon: E,
945
+ blocks: () => [
946
+ { _type: "Dropdown", _id: "dropdown" },
947
+ {
948
+ _type: "DropdownButton",
949
+ _id: "button",
950
+ _parent: "dropdown",
951
+ title: "Menu Item",
952
+ icon: '<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24"> <path d="M16.293 9.293 12 13.586 7.707 9.293l-1.414 1.414L12 16.414l5.707-5.707z"/> </svg>',
953
+ styles: "#styles:,flex items-center gap-2 px-4 py-1"
954
+ },
955
+ {
956
+ _type: "DropdownContent",
957
+ _id: "content",
958
+ _parent: "dropdown",
959
+ styles: "#styles:,absolute left-0 w-80 mt-0.5 bg-white rounded-lg shadow-lg z-50"
960
+ },
961
+ {
962
+ _type: "Link",
963
+ _id: "link",
964
+ _parent: "content",
965
+ content: "Link",
966
+ styles: "#styles:,flex items-center gap-2 px-4 py-1",
967
+ link: { href: "https://www.google.com", type: "url", target: "_self" }
968
+ }
969
+ ],
970
+ category: "core",
971
+ wrapper: !0,
972
+ ...u({
973
+ properties: {
974
+ showDropdown: z({
975
+ type: "boolean",
976
+ title: "Show Dropdown",
977
+ default: !1
978
+ }),
979
+ styles: c("relative w-max")
980
+ }
981
+ })
982
+ }, lt = (e) => {
983
+ const { blockProps: o, fieldName: t, label: l, styles: n, inputStyles: r, required: i, checked: a, showLabel: d = !0 } = e, y = B();
984
+ return d ? /* @__PURE__ */ s.jsxs("div", { ...n, ...o, children: [
985
+ /* @__PURE__ */ s.jsx(
986
+ "input",
987
+ {
988
+ ...r,
989
+ name: t,
990
+ id: y,
991
+ type: "checkbox",
992
+ required: i,
993
+ defaultChecked: a
994
+ }
995
+ ),
996
+ l && /* @__PURE__ */ s.jsx("label", { htmlFor: y, children: l })
997
+ ] }) : /* @__PURE__ */ s.jsx(
998
+ "input",
999
+ {
1000
+ id: y,
1001
+ ...o,
1002
+ ...r,
1003
+ ...n,
1004
+ type: "checkbox",
1005
+ required: i,
1006
+ name: t
1007
+ }
1008
+ );
1009
+ }, nt = {
1010
+ type: "Checkbox",
1011
+ label: "web_blocks.checkbox",
1012
+ category: "core",
1013
+ icon: Q,
1014
+ group: "form",
934
1015
  ...u({
935
1016
  properties: {
936
- styles: c("")
1017
+ styles: c("flex items-center gap-x-2"),
1018
+ inputStyles: c(""),
1019
+ label: {
1020
+ type: "string",
1021
+ title: "Label",
1022
+ default: "Label"
1023
+ },
1024
+ checked: {
1025
+ type: "boolean",
1026
+ title: "Checked",
1027
+ default: !1
1028
+ },
1029
+ required: {
1030
+ type: "boolean",
1031
+ title: "Required",
1032
+ default: !1
1033
+ },
1034
+ showLabel: {
1035
+ type: "boolean",
1036
+ title: "Show Label",
1037
+ default: !0
1038
+ }
937
1039
  }
938
1040
  }),
939
- canAcceptBlock: () => !0,
940
- canDelete: () => !1,
941
- canMove: () => !1,
942
- canDuplicate: () => !1
943
- }, ot = (e) => {
1041
+ aiProps: ["label"],
1042
+ i18nProps: ["label"]
1043
+ }, st = (e) => {
944
1044
  const { children: o, blockProps: t, errorMessage: l, successMessage: n, action: r, styles: i, inBuilder: a } = e;
945
1045
  let d = o;
946
1046
  o || (d = /* @__PURE__ */ s.jsx(w, { inBuilder: a }));
947
1047
  const y = {
948
1048
  "x-data": "{}",
949
1049
  "x-on:submit.prevent": "post"
950
- }, h = {
1050
+ }, m = {
951
1051
  "x-html": "",
952
1052
  ":class": "{'text-red-500': formStatus === 'ERROR', 'text-green-500': formStatus === 'SUCCESS'}"
953
1053
  };
@@ -962,16 +1062,16 @@ const We = {
962
1062
  ...t,
963
1063
  ...i,
964
1064
  children: [
965
- /* @__PURE__ */ s.jsx("div", { ...h }),
1065
+ /* @__PURE__ */ s.jsx("div", { ...m }),
966
1066
  d
967
1067
  ]
968
1068
  }
969
1069
  );
970
- }, lt = {
1070
+ }, rt = {
971
1071
  type: "Form",
972
1072
  label: "Form",
973
1073
  category: "core",
974
- icon: se,
1074
+ icon: re,
975
1075
  group: "form",
976
1076
  blocks: () => [
977
1077
  { _type: "Form", _id: "form", styles: "#styles:p-1 space-y-2," },
@@ -1008,15 +1108,15 @@ const We = {
1008
1108
  i18nProps: ["errorMessage", "successMessage"],
1009
1109
  aiProps: ["errorMessage", "successMessage"],
1010
1110
  canAcceptBlock: () => !0
1011
- }, nt = (e) => {
1012
- const { blockProps: o, inBuilder: t, label: l, styles: n, inputStyles: r, icon: i, iconSize: a, iconPos: d } = e, y = v(), h = {
1111
+ }, it = (e) => {
1112
+ const { blockProps: o, inBuilder: t, label: l, styles: n, inputStyles: r, icon: i, iconSize: a, iconPos: d } = e, y = B(), m = {
1013
1113
  "x-bind:disabled": "formLoading"
1014
1114
  };
1015
1115
  return /* @__PURE__ */ s.jsxs(
1016
1116
  "button",
1017
1117
  {
1018
1118
  id: y,
1019
- ...h,
1119
+ ...m,
1020
1120
  ...r,
1021
1121
  ...n,
1022
1122
  ...o || {},
@@ -1034,11 +1134,11 @@ const We = {
1034
1134
  ]
1035
1135
  }
1036
1136
  );
1037
- }, st = {
1137
+ }, at = {
1038
1138
  type: "FormButton",
1039
1139
  label: "Submit Button",
1040
1140
  category: "core",
1041
- icon: N,
1141
+ icon: $,
1042
1142
  group: "form",
1043
1143
  ...u({
1044
1144
  properties: {
@@ -1074,16 +1174,16 @@ const We = {
1074
1174
  }),
1075
1175
  i18nProps: ["label"],
1076
1176
  aiProps: ["label"]
1077
- }, rt = (e) => {
1078
- const { blockProps: o, fieldName: t, label: l, placeholder: n, styles: r, inputStyles: i, showLabel: a, required: d, inputType: y } = e, h = v();
1177
+ }, ct = (e) => {
1178
+ const { blockProps: o, fieldName: t, label: l, placeholder: n, styles: r, inputStyles: i, showLabel: a, required: d, inputType: y } = e, m = B();
1079
1179
  return a ? /* @__PURE__ */ s.jsxs("div", { ...r, ...o, children: [
1080
- a && /* @__PURE__ */ s.jsx("label", { htmlFor: h, children: l }),
1180
+ a && /* @__PURE__ */ s.jsx("label", { htmlFor: m, children: l }),
1081
1181
  /* @__PURE__ */ s.jsx(
1082
1182
  "input",
1083
1183
  {
1084
1184
  name: t,
1085
1185
  ...i,
1086
- id: h,
1186
+ id: m,
1087
1187
  type: y,
1088
1188
  placeholder: n,
1089
1189
  required: d
@@ -1092,7 +1192,7 @@ const We = {
1092
1192
  ] }) : /* @__PURE__ */ s.jsx(
1093
1193
  "input",
1094
1194
  {
1095
- id: h,
1195
+ id: m,
1096
1196
  name: t,
1097
1197
  ...o,
1098
1198
  ...i,
@@ -1102,11 +1202,11 @@ const We = {
1102
1202
  required: d
1103
1203
  }
1104
1204
  );
1105
- }, it = {
1205
+ }, dt = {
1106
1206
  type: "Input",
1107
1207
  label: "web_blocks.input",
1108
1208
  category: "core",
1109
- icon: D,
1209
+ icon: A,
1110
1210
  group: "form",
1111
1211
  ...u({
1112
1212
  properties: {
@@ -1157,8 +1257,30 @@ const We = {
1157
1257
  }),
1158
1258
  aiProps: ["label", "placeholder"],
1159
1259
  i18nProps: ["label", "placeholder"]
1160
- }, at = (e) => {
1161
- const { blockProps: o, fieldName: t, label: l, styles: n, inputStyles: r, required: i, checked: a, showLabel: d = !0 } = e, y = v();
1260
+ }, pt = (e) => {
1261
+ const { blockProps: o, content: t, styles: l, children: n } = e, r = { ...l, ...o };
1262
+ return n ? h.createElement("label", r, n) : h.createElement("label", {
1263
+ ...r,
1264
+ dangerouslySetInnerHTML: { __html: t }
1265
+ });
1266
+ }, ut = {
1267
+ type: "Label",
1268
+ label: "Label",
1269
+ category: "core",
1270
+ icon: ee,
1271
+ group: "form",
1272
+ ...u({
1273
+ properties: {
1274
+ styles: c(),
1275
+ content: {
1276
+ type: "string",
1277
+ title: "Content",
1278
+ default: ""
1279
+ }
1280
+ }
1281
+ })
1282
+ }, gt = (e) => {
1283
+ const { blockProps: o, fieldName: t, label: l, styles: n, inputStyles: r, required: i, checked: a, showLabel: d = !0 } = e, y = B();
1162
1284
  return d ? /* @__PURE__ */ s.jsxs("div", { ...n, ...o, children: [
1163
1285
  /* @__PURE__ */ s.jsx("input", { ...r, name: t, id: y, type: "radio", required: i, defaultChecked: a }),
1164
1286
  l && /* @__PURE__ */ s.jsx("label", { htmlFor: y, children: l })
@@ -1175,11 +1297,11 @@ const We = {
1175
1297
  name: t
1176
1298
  }
1177
1299
  );
1178
- }, ct = {
1300
+ }, yt = {
1179
1301
  type: "Radio",
1180
1302
  label: "web_blocks.radio",
1181
1303
  category: "core",
1182
- icon: K,
1304
+ icon: te,
1183
1305
  group: "form",
1184
1306
  ...u({
1185
1307
  properties: {
@@ -1209,23 +1331,23 @@ const We = {
1209
1331
  }),
1210
1332
  aiProps: ["label"],
1211
1333
  i18nProps: ["label"]
1212
- }, dt = (e) => {
1213
- const { blockProps: o, fieldName: t, label: l, placeholder: n, styles: r, inputStyles: i, required: a, showLabel: d, _multiple: y, options: h } = e, b = v();
1334
+ }, mt = (e) => {
1335
+ const { blockProps: o, fieldName: t, label: l, placeholder: n, styles: r, inputStyles: i, required: a, showLabel: d, _multiple: y, options: m } = e, b = B();
1214
1336
  return d ? /* @__PURE__ */ s.jsxs("div", { ...r, ...o, children: [
1215
1337
  d && /* @__PURE__ */ s.jsx("label", { htmlFor: b, children: l }),
1216
1338
  /* @__PURE__ */ s.jsxs("select", { ...i, id: b, required: a, multiple: y, name: t, children: [
1217
1339
  /* @__PURE__ */ s.jsx("option", { value: "", disabled: !0, selected: !0, hidden: !0, children: n }),
1218
- j(h, (g) => /* @__PURE__ */ s.jsx("option", { value: g == null ? void 0 : g.value, children: g == null ? void 0 : g.label }, g == null ? void 0 : g.value))
1340
+ P(m, (g) => /* @__PURE__ */ s.jsx("option", { value: g == null ? void 0 : g.value, children: g == null ? void 0 : g.label }, g == null ? void 0 : g.value))
1219
1341
  ] })
1220
1342
  ] }) : /* @__PURE__ */ s.jsxs("select", { id: b, ...r, ...o, required: a, multiple: y, name: t, children: [
1221
1343
  /* @__PURE__ */ s.jsx("option", { value: "", disabled: !0, selected: !0, hidden: !0, children: n }),
1222
- j(h, (g) => /* @__PURE__ */ s.jsx("option", { value: g == null ? void 0 : g.value, children: g == null ? void 0 : g.label }, g == null ? void 0 : g.value))
1344
+ P(m, (g) => /* @__PURE__ */ s.jsx("option", { value: g == null ? void 0 : g.value, children: g == null ? void 0 : g.label }, g == null ? void 0 : g.value))
1223
1345
  ] });
1224
- }, pt = {
1346
+ }, ht = {
1225
1347
  type: "Select",
1226
1348
  label: "web_blocks.select",
1227
1349
  category: "core",
1228
- icon: T,
1350
+ icon: E,
1229
1351
  group: "form",
1230
1352
  ...u({
1231
1353
  properties: {
@@ -1280,8 +1402,8 @@ const We = {
1280
1402
  }),
1281
1403
  aiProps: ["label", "placeholder"],
1282
1404
  i18nProps: ["label", "placeholder"]
1283
- }, ut = (e) => {
1284
- const { blockProps: o, fieldName: t, label: l, placeholder: n, styles: r, inputStyles: i, _rows: a, showLabel: d } = e, y = v();
1405
+ }, ft = (e) => {
1406
+ const { blockProps: o, fieldName: t, label: l, placeholder: n, styles: r, inputStyles: i, _rows: a, showLabel: d } = e, y = B();
1285
1407
  return d ? /* @__PURE__ */ s.jsxs("div", { ...r, ...o, children: [
1286
1408
  d && /* @__PURE__ */ s.jsx("label", { htmlFor: y, children: l }),
1287
1409
  /* @__PURE__ */ s.jsx("textarea", { name: t, ...i, id: y, placeholder: n, rows: a })
@@ -1297,11 +1419,11 @@ const We = {
1297
1419
  rows: a
1298
1420
  }
1299
1421
  );
1300
- }, gt = {
1422
+ }, bt = {
1301
1423
  type: "TextArea",
1302
1424
  label: "web_blocks.textarea",
1303
1425
  category: "core",
1304
- icon: D,
1426
+ icon: A,
1305
1427
  group: "form",
1306
1428
  ...u({
1307
1429
  properties: {
@@ -1332,190 +1454,74 @@ const We = {
1332
1454
  }),
1333
1455
  aiProps: ["label", "placeholder"],
1334
1456
  i18nProps: ["label", "placeholder"]
1335
- }, yt = (e) => {
1336
- const { blockProps: o, fieldName: t, label: l, styles: n, inputStyles: r, required: i, checked: a, showLabel: d = !0 } = e, y = v();
1337
- return d ? /* @__PURE__ */ s.jsxs("div", { ...n, ...o, children: [
1338
- /* @__PURE__ */ s.jsx(
1339
- "input",
1340
- {
1341
- ...r,
1342
- name: t,
1343
- id: y,
1344
- type: "checkbox",
1345
- required: i,
1346
- defaultChecked: a
1347
- }
1348
- ),
1349
- l && /* @__PURE__ */ s.jsx("label", { htmlFor: y, children: l })
1350
- ] }) : /* @__PURE__ */ s.jsx(
1351
- "input",
1352
- {
1353
- id: y,
1354
- ...o,
1355
- ...r,
1356
- ...n,
1357
- type: "checkbox",
1358
- required: i,
1359
- name: t
1360
- }
1361
- );
1362
- }, mt = {
1363
- type: "Checkbox",
1364
- label: "web_blocks.checkbox",
1457
+ }, kt = (e) => {
1458
+ const { blockProps: o, backgroundImage: t, children: l, styles: n, tag: r } = e;
1459
+ let i = {};
1460
+ return t && (i = { backgroundImage: `url(${t})` }), v(r || "div", { ...o, ...n, style: i }, l);
1461
+ }, xt = {
1462
+ type: "Body",
1463
+ label: "Body",
1365
1464
  category: "core",
1366
- icon: Q,
1367
- group: "form",
1465
+ group: "basic",
1466
+ hidden: !0,
1368
1467
  ...u({
1369
1468
  properties: {
1370
- styles: c("flex items-center gap-x-2"),
1371
- inputStyles: c(""),
1372
- label: {
1469
+ styles: c("font-body antialiased"),
1470
+ backgroundImage: {
1373
1471
  type: "string",
1374
- title: "Label",
1375
- default: "Label"
1376
- },
1377
- checked: {
1378
- type: "boolean",
1379
- title: "Checked",
1380
- default: !1
1381
- },
1382
- required: {
1383
- type: "boolean",
1384
- title: "Required",
1385
- default: !1
1472
+ title: "Image",
1473
+ default: "",
1474
+ ui: { "ui:widget": "image" }
1386
1475
  },
1387
- showLabel: {
1388
- type: "boolean",
1389
- title: "Show Label",
1390
- default: !0
1391
- }
1392
- }
1393
- }),
1394
- aiProps: ["label"],
1395
- i18nProps: ["label"]
1396
- }, ht = (e) => {
1397
- const { blockProps: o, content: t, styles: l, children: n } = e, r = { ...l, ...o };
1398
- return n ? m.createElement("label", r, n) : m.createElement("label", {
1399
- ...r,
1400
- dangerouslySetInnerHTML: { __html: t }
1401
- });
1402
- }, ft = {
1403
- type: "Label",
1404
- label: "Label",
1405
- category: "core",
1406
- icon: ee,
1407
- group: "form",
1408
- ...u({
1409
- properties: {
1410
- styles: c(),
1411
- content: {
1476
+ tag: {
1412
1477
  type: "string",
1413
- title: "Content",
1414
- default: ""
1478
+ default: "div",
1479
+ title: "Tag",
1480
+ oneOf: [
1481
+ { const: "div", title: "div" },
1482
+ { const: "header", title: "header" },
1483
+ { const: "footer", title: "footer" },
1484
+ { const: "section", title: "section" },
1485
+ { const: "article", title: "article" },
1486
+ { const: "aside", title: "aside" },
1487
+ { const: "main", title: "main" },
1488
+ { const: "nav", title: "nav" },
1489
+ { const: "figure", title: "figure" },
1490
+ { const: "details", title: "details" },
1491
+ { const: "summary", title: "summary" },
1492
+ { const: "dialog", title: "dialog" },
1493
+ { const: "strike", title: "strike" },
1494
+ { const: "caption", title: "caption" },
1495
+ { const: "legend", title: "legend" },
1496
+ { const: "figcaption", title: "figcaption" },
1497
+ { const: "mark", title: "mark" }
1498
+ ]
1415
1499
  }
1416
1500
  }
1417
- })
1418
- }, C = {
1419
- wrapper: { "x-data": "{ open: false }" },
1420
- button: { "x-on:click": "open = !open" },
1421
- menu: { "x-show": "open", "x-on:click.away": "open = false", "x-cloak": "", "x-transition": "" }
1422
- }, bt = (e) => {
1423
- const { blockProps: o, content: t, icon: l, iconWidth: n, iconHeight: r, styles: i, show: a } = e;
1424
- return /* @__PURE__ */ s.jsxs("button", { ...o, ...i, ...C.button, children: [
1425
- t,
1426
- /* @__PURE__ */ s.jsx(
1427
- "span",
1428
- {
1429
- className: a ? "rotate-180" : "",
1430
- dangerouslySetInnerHTML: { __html: l },
1431
- style: { width: n, height: r }
1432
- }
1433
- )
1434
- ] });
1435
- };
1436
- p(bt, {
1437
- type: "DropdownButton",
1438
- label: "Dropdown Button",
1439
- group: "advanced",
1440
- category: "core",
1441
- hidden: !0,
1442
- canMove: () => !1,
1501
+ }),
1502
+ canAcceptBlock: () => !0,
1443
1503
  canDelete: () => !1,
1444
- ...u({
1445
- properties: {
1446
- show: B("Dropdown", "showDropdown"),
1447
- content: { type: "string", title: "Title", default: "Menu Item" },
1448
- icon: { type: "string", title: "Icon", default: "", ui: { "ui:widget": "icon" } },
1449
- iconWidth: { type: "string", title: "Icon Width", default: "16px" },
1450
- iconHeight: { type: "string", title: "Icon Height", default: "16px" },
1451
- styles: c("flex items-center gap-2 px-4 py-1")
1452
- }
1453
- })
1454
- });
1455
- const kt = (e) => {
1456
- const { blockProps: o, children: t, styles: l, show: n, inBuilder: r } = e;
1457
- return r && !n ? null : /* @__PURE__ */ s.jsx("div", { ...o, ...C.menu, ...l, children: t });
1458
- };
1459
- p(kt, {
1460
- type: "DropdownContent",
1461
- label: "Dropdown Content",
1462
- hidden: !0,
1463
1504
  canMove: () => !1,
1464
- canDelete: () => !1,
1465
- canAcceptBlock: () => !0,
1466
- ...u({
1467
- properties: {
1468
- show: B("Dropdown", "showDropdown"),
1469
- styles: c("absolute left-0 p-2 w-80 mt-2 bg-white rounded-lg shadow-lg z-50")
1470
- }
1471
- })
1472
- });
1473
- const xt = (e) => {
1474
- const { blockProps: o, children: t, styles: l } = e;
1475
- return /* @__PURE__ */ s.jsx("div", { ...o, ...l, ...C.wrapper, children: t });
1476
- }, wt = {
1477
- type: "Dropdown",
1478
- label: "Dropdown",
1479
- group: "basic",
1480
- icon: T,
1481
- blocks: () => [
1482
- { _type: "Dropdown", _id: "dropdown" },
1483
- {
1484
- _type: "DropdownButton",
1485
- _id: "button",
1486
- _parent: "dropdown",
1487
- title: "Menu Item",
1488
- icon: '<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24"> <path d="M16.293 9.293 12 13.586 7.707 9.293l-1.414 1.414L12 16.414l5.707-5.707z"/> </svg>',
1489
- styles: "#styles:,flex items-center gap-2 px-4 py-1"
1490
- },
1491
- {
1492
- _type: "DropdownContent",
1493
- _id: "content",
1494
- _parent: "dropdown",
1495
- styles: "#styles:,absolute left-0 w-80 mt-0.5 bg-white rounded-lg shadow-lg z-50"
1496
- },
1497
- {
1498
- _type: "Link",
1499
- _id: "link",
1500
- _parent: "content",
1501
- content: "Link",
1502
- styles: "#styles:,flex items-center gap-2 px-4 py-1",
1503
- link: { href: "https://www.google.com", type: "url", target: "_self" }
1504
- }
1505
- ],
1505
+ canDuplicate: () => !1
1506
+ }, wt = (e) => {
1507
+ const { blockProps: o, styles: t } = e;
1508
+ return v("br", { ...o, ...t });
1509
+ }, vt = {
1510
+ type: "LineBreak",
1511
+ label: "Line Break",
1506
1512
  category: "core",
1507
- wrapper: !0,
1513
+ group: "basic",
1514
+ hidden: !0,
1508
1515
  ...u({
1509
1516
  properties: {
1510
- showDropdown: R({
1511
- type: "boolean",
1512
- title: "Show Dropdown",
1513
- default: !1
1514
- }),
1515
- styles: c("relative w-max")
1517
+ styles: c("")
1516
1518
  }
1517
- })
1518
- }, L = {
1519
+ }),
1520
+ canAcceptBlock: () => !0,
1521
+ canDelete: () => !1,
1522
+ canMove: () => !1,
1523
+ canDuplicate: () => !1
1524
+ }, I = {
1519
1525
  SMALL: {
1520
1526
  1: "col-span-1",
1521
1527
  2: "col-span-2",
@@ -1558,20 +1564,20 @@ const xt = (e) => {
1558
1564
  11: "lg:col-span-11",
1559
1565
  12: "lg:col-span-12"
1560
1566
  }
1561
- }, vt = (e) => {
1567
+ }, Bt = (e) => {
1562
1568
  const { blockProps: o, children: t, styles: l, colSpan: n, tabletColSpan: r, desktopColSpan: i } = e, d = { className: [
1563
1569
  f(l, "className", ""),
1564
- f(L, ["SMALL", isNaN(n) || !n ? 6 : n], ""),
1565
- r ? f(L, ["MEDIUM", r || n], "") : "",
1566
- i ? f(L, ["LARGE", r || n], "") : ""
1570
+ f(I, ["SMALL", isNaN(n) || !n ? 6 : n], ""),
1571
+ r ? f(I, ["MEDIUM", r || n], "") : "",
1572
+ i ? f(I, ["LARGE", r || n], "") : ""
1567
1573
  ].join(" ") };
1568
- return /* @__PURE__ */ s.jsx("div", { ...o, ...l, ...d, children: t || /* @__PURE__ */ s.jsx("div", { className: "min-h-12 h-full w-full border-2 border-dashed border-gray-400 bg-gray-100 dark:bg-gray-900" }) });
1569
- }, Bt = {
1574
+ return /* @__PURE__ */ s.jsx("div", { ...o, ...l, ...d, children: t || /* @__PURE__ */ s.jsx("div", { className: "h-full min-h-12 w-full border-2 border-dashed border-gray-400 bg-gray-100 dark:bg-gray-900" }) });
1575
+ }, _t = {
1570
1576
  type: "Column",
1571
1577
  label: "Column",
1572
1578
  group: "basic",
1573
1579
  category: "core",
1574
- icon: re,
1580
+ icon: ie,
1575
1581
  wrapper: !0,
1576
1582
  canDelete: () => !0,
1577
1583
  canAcceptBlock: () => !0,
@@ -1601,14 +1607,14 @@ const xt = (e) => {
1601
1607
  }
1602
1608
  }
1603
1609
  })
1604
- }, _t = (e) => {
1610
+ }, Lt = (e) => {
1605
1611
  const { blockProps: o, children: t, styles: l, gutter: n } = e, i = { className: [f(l, "className", ""), " grid grid-cols-12"].join() };
1606
1612
  return typeof (l == null ? void 0 : l.style) == "object" ? l.style.gap = `${n}px` : i.style = { gap: `${n}px` }, /* @__PURE__ */ s.jsx("div", { ...o, ...l, ...i, children: t });
1607
- }, Lt = {
1613
+ }, It = {
1608
1614
  type: "Row",
1609
1615
  label: "Row",
1610
1616
  group: "basic",
1611
- icon: ie,
1617
+ icon: ae,
1612
1618
  blocks: () => [
1613
1619
  { _type: "Row", _id: "row", styles: "#styles:,p-1" },
1614
1620
  { _type: "Column", id: "column", _parent: "row", styles: "#styles:," },
@@ -1634,9 +1640,9 @@ const xt = (e) => {
1634
1640
  }
1635
1641
  }
1636
1642
  })
1637
- }, Nt = () => {
1638
- p(ae, ce), p(ye, me), p(de, pe), p(he, fe), p(be, ke), p(xe, we), p(ve, Be), p(_e, Le), p(Ie, Ce), p(je, Pe), p(Se, Me), p(Ne, Ee), p($e, De), p(Ae, Re), p(ue, ge), p(Fe, Ge), p(Ze, Je), p(ot, lt), p(nt, st), p(rt, it), p(yt, mt), p(at, ct), p(dt, pt), p(ut, gt), p(ht, ft), p(et, tt), p(Ke, Qe), p(ze, He), p(Ue, We), p(Xe, Ye), p(xt, wt), p(_t, Lt), p(vt, Bt);
1643
+ }, Dt = () => {
1644
+ p(ce, de), p(me, he), p(pe, ue), p(fe, be), p(ke, xe), p(Be, _e), p(we, ve), p(Fe, Ge), p(He, qe), p(Ue, Ve), p(Oe, We), p(Ee, Ae), p(Re, ze), p(Je, Ke), p(ge, ye), p(Ie, Ce), p(Xe, Ye), p(st, rt), p(it, at), p(ct, dt), p(lt, nt), p(gt, yt), p(mt, ht), p(ft, bt), p(pt, ut), p(wt, vt), p(kt, xt), p(Ne, $e), p(je, Me), p(De, Te), p(tt, ot), p(Lt, It), p(Bt, _t);
1639
1645
  };
1640
1646
  export {
1641
- Nt as loadWebBlocks
1647
+ Dt as loadWebBlocks
1642
1648
  };