@levo-so/studio 0.3.11 → 0.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{BillingStep-CvRmZGdq.js → BillingStep-BG4hhiaE.js} +1 -1
- package/{Button-Dza3e6Mv.js → Button-CYXSFoBr.js} +1 -1
- package/{EntryCard-BpcaCqXU.js → EntryCard-Btvieg4y.js} +1 -1
- package/{LoginCard-B_anBE4b.js → LoginCard-HUsLBH9Y.js} +1 -1
- package/{PendingApprovalCard-DbYp0nSk.js → PendingApprovalCard-Cf58Fj0h.js} +1 -1
- package/{PopupBody-BI-MJqmd-BrzdFaaE.js → PopupBody-BI-MJqmd-Cj3VgwnW.js} +1 -1
- package/{PopupRenderer-D66Gx63H-GHfJebm6.js → PopupRenderer-D66Gx63H-CU-scfrr.js} +1 -1
- package/{ProfileCard-DmAnVf5R.js → ProfileCard-WC8XhXzF.js} +1 -1
- package/{bookingCard-CLhIpOpR.js → bookingCard-CmsUeDr3.js} +2 -2
- package/collection.d.ts +6 -0
- package/collection.js +1 -1
- package/{dist-D5mTOitS.js → dist-CveI0e3_.js} +56 -51
- package/index.d.ts +6 -0
- package/index.js +5 -5
- package/package.json +4 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "./Button-
|
|
2
|
+
import { t as e } from "./Button-CYXSFoBr.js";
|
|
3
3
|
import { useState as t } from "react";
|
|
4
4
|
import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/bookingCard/BillingStep.tsx
|
|
@@ -20,7 +20,7 @@ import oe from "isomorphic-dompurify";
|
|
|
20
20
|
var O = async (e, t) => {
|
|
21
21
|
let n = {};
|
|
22
22
|
return t?.site_id && (n.site_id = t.site_id), t?.locale && (n.locale = t.locale), t?.country && (n.country = t.country), (await e.url("/v1/studio/popup/list-active").query(n).get().json())?.content?.data ?? [];
|
|
23
|
-
}, k = _(() => import("./PopupRenderer-D66Gx63H-
|
|
23
|
+
}, k = _(() => import("./PopupRenderer-D66Gx63H-CU-scfrr.js").then((e) => e.t).then((e) => ({ default: e.PopupRenderer }))), A = (e) => {
|
|
24
24
|
let t = u(9), { siteId: n, pageId: r } = e, { fetch: a, logger: o } = f(), [s, c] = S(null), l = x(!1), p, h;
|
|
25
25
|
if (t[0] !== a || t[1] !== o || t[2] !== n ? (p = () => {
|
|
26
26
|
if (l.current) return;
|
|
@@ -8,7 +8,7 @@ var s = {
|
|
|
8
8
|
title: "_title_s7k8g_7",
|
|
9
9
|
subtitle: "_subtitle_s7k8g_14",
|
|
10
10
|
formWrapper: "_formWrapper_s7k8g_20"
|
|
11
|
-
}, c = r(() => import("./PendingApprovalCard-
|
|
11
|
+
}, c = r(() => import("./PendingApprovalCard-Cf58Fj0h.js")), l = ({ logo: r, siteName: l, page: u }) => {
|
|
12
12
|
let [d, f] = i(!1), [p, m] = i(!1), h = u.access?.find((e) => e.kind === "gating" && e.enabled)?.options;
|
|
13
13
|
return p ? /* @__PURE__ */ a(n, {
|
|
14
14
|
fallback: /* @__PURE__ */ a("div", {}),
|
|
@@ -75,7 +75,7 @@ var Q = [
|
|
|
75
75
|
...i,
|
|
76
76
|
children: o
|
|
77
77
|
}) : null;
|
|
78
|
-
}, te = /* @__PURE__ */ d({ PopupBody: () => oe }), ne = b(() => import("./dist-
|
|
78
|
+
}, te = /* @__PURE__ */ d({ PopupBody: () => oe }), ne = b(() => import("./dist-CveI0e3_.js").then((e) => e.t).then((e) => ({ default: e.CollectionFormBuilder }))), re = a({ baseSpacing: ".625rem" }), ie = { style: l({ form: { gap: "1rem" } }) }, ae = {
|
|
79
79
|
left: u,
|
|
80
80
|
center: h,
|
|
81
81
|
right: p
|
|
@@ -104,7 +104,7 @@ var oe = (e) => (e ?? "16:9").replace(":", " / "), se = (e) => {
|
|
|
104
104
|
...i,
|
|
105
105
|
children: n
|
|
106
106
|
}), t[15] = n, t[16] = i, t[17] = g, t[18] = _) : _ = t[18], _;
|
|
107
|
-
}, ue = F(() => import("./PopupBody-BI-MJqmd-
|
|
107
|
+
}, ue = F(() => import("./PopupBody-BI-MJqmd-Cj3VgwnW.js").then((e) => e.n).then((e) => ({ default: e.PopupBody }))), de = (e) => {
|
|
108
108
|
let t = D(7), { size: n } = e, r = n ?? "medium", i;
|
|
109
109
|
t[0] === r ? i = t[1] : (i = E({ size: r }), t[0] = r, t[1] = i);
|
|
110
110
|
let a, o, s;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "./Button-
|
|
2
|
+
import { t as e } from "./Button-CYXSFoBr.js";
|
|
3
3
|
import { n as t } from "./AuthProvider-B5NfFwbG.js";
|
|
4
4
|
import { t as n } from "./cn-B6c1DjO_.js";
|
|
5
5
|
import { n as r, t as i } from "./StripePaymentModal-CiKqmQwK.js";
|
|
6
|
-
import { BillingStep as a } from "./BillingStep-
|
|
6
|
+
import { BillingStep as a } from "./BillingStep-BG4hhiaE.js";
|
|
7
7
|
import { errorHandler as o, useLevo as s } from "@levo-so/react";
|
|
8
8
|
import { useEffect as c, useRef as l, useState as u } from "react";
|
|
9
9
|
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
package/collection.d.ts
CHANGED
|
@@ -87,6 +87,12 @@ declare interface ILevoFormContext {
|
|
|
87
87
|
uiConfig?: {
|
|
88
88
|
hideSectionHeadings?: boolean;
|
|
89
89
|
hideFormHeading?: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Suppress the built-in success overlay, for hosts that render their own confirmation
|
|
92
|
+
* (or navigate away) from `onSuccess`. The form still submits and still resets itself —
|
|
93
|
+
* it just stays on screen instead of being replaced by the thank-you card.
|
|
94
|
+
*/
|
|
95
|
+
hideSuccessScreen?: boolean;
|
|
90
96
|
};
|
|
91
97
|
toastConfig?: {
|
|
92
98
|
showSuccessToast?: boolean;
|
package/collection.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, c as t, i as n, n as r, o as i, r as a, s as o } from "./dist-
|
|
1
|
+
import { a as e, c as t, i as n, n as r, o as i, r as a, s as o } from "./dist-CveI0e3_.js";
|
|
2
2
|
export { t as CollectionForm, a as CollectionFormBuilder, r as CollectionFormRenderer, n as FormBuilder, i as LevoFormProvider, e as useLevoForm, o as useLevoFormContext };
|
|
@@ -2324,14 +2324,14 @@ var Br = ((e) => (t) => t ? zr(e, t) : e)({
|
|
|
2324
2324
|
}, oi = (e) => {
|
|
2325
2325
|
localStorage.removeItem(`${e}-${ri.FORM_VALUES}`);
|
|
2326
2326
|
}, si = ({ schema: e, originalSchema: t, onSubmitSuccess: n, onSubmitError: r, onInit: i, setFormErrorAfterSubmit: a = !0 }) => {
|
|
2327
|
-
let o = R(() => e, [e]), s = R(() => t || o, [t, o]), c = A(), { toastConfig: l, onSuccess: u, onError: d, isLoggedIn: f, isDisabled: p, externalInitialValues: m = {}, account: h, preview: g } = ti(), [
|
|
2327
|
+
let o = R(() => e, [e]), s = R(() => t || o, [t, o]), c = A(), { toastConfig: l, onSuccess: u, onError: d, isLoggedIn: f, isDisabled: p, externalInitialValues: m = {}, account: h, preview: g, uiConfig: _ } = ti(), [v, y] = B({
|
|
2328
2328
|
contentId: null,
|
|
2329
2329
|
publishedId: null
|
|
2330
|
-
}), [
|
|
2330
|
+
}), [b, x] = B(!1), [S, C] = B(!1), [w, T] = B(!1), E = z({}), O = z({}), j = (e) => {
|
|
2331
2331
|
if (!o?.sections) return null;
|
|
2332
2332
|
for (let t of o.sections) for (let n of t?.fields ?? []) if (n?.key === e) return n?.kind ?? null;
|
|
2333
2333
|
return null;
|
|
2334
|
-
},
|
|
2334
|
+
}, M = () => {
|
|
2335
2335
|
let e = {};
|
|
2336
2336
|
try {
|
|
2337
2337
|
if (typeof window < "u") {
|
|
@@ -2339,7 +2339,7 @@ var Br = ((e) => (t) => t ? zr(e, t) : e)({
|
|
|
2339
2339
|
for (let [n, r] of t.entries()) {
|
|
2340
2340
|
let [t, i] = n.split("-");
|
|
2341
2341
|
if (t === "lf" && i && r) try {
|
|
2342
|
-
let t = JSON.parse(r), n =
|
|
2342
|
+
let t = JSON.parse(r), n = j(i);
|
|
2343
2343
|
e[i] = typeof t == "number" && !(n === "number" || n === "currency") ? r : t;
|
|
2344
2344
|
} catch {
|
|
2345
2345
|
e[i] = r;
|
|
@@ -2354,112 +2354,117 @@ var Br = ((e) => (t) => t ? zr(e, t) : e)({
|
|
|
2354
2354
|
...n,
|
|
2355
2355
|
...e
|
|
2356
2356
|
};
|
|
2357
|
-
|
|
2357
|
+
E.current = {
|
|
2358
2358
|
...t,
|
|
2359
2359
|
...r,
|
|
2360
|
-
...
|
|
2360
|
+
...E.current
|
|
2361
2361
|
};
|
|
2362
|
-
},
|
|
2362
|
+
}, N = ae({
|
|
2363
2363
|
mode: "onTouched",
|
|
2364
2364
|
disabled: p
|
|
2365
|
-
}), { formState:
|
|
2366
|
-
|
|
2367
|
-
...
|
|
2365
|
+
}), { formState: P } = N, F = (e) => {
|
|
2366
|
+
E.current = {
|
|
2367
|
+
...E.current || {},
|
|
2368
2368
|
...e
|
|
2369
2369
|
};
|
|
2370
2370
|
};
|
|
2371
2371
|
return L(() => {
|
|
2372
2372
|
if (o && c?.collection) {
|
|
2373
|
-
if (
|
|
2373
|
+
if (M(), !v.contentId && !v.publishedId && !g) {
|
|
2374
2374
|
let e = o?.allow_multiple === !1;
|
|
2375
2375
|
if (o?.allow_draft) {
|
|
2376
2376
|
if (f) {
|
|
2377
|
-
|
|
2377
|
+
x(!0), c?.collection?.getDraftEntry(o?.key).then((t) => {
|
|
2378
2378
|
let n = t?.content?.data;
|
|
2379
2379
|
if (n === null) {
|
|
2380
|
-
|
|
2380
|
+
C(!0);
|
|
2381
2381
|
return;
|
|
2382
2382
|
}
|
|
2383
|
-
|
|
2383
|
+
C(!1);
|
|
2384
2384
|
let r = e && Array.isArray(n) && n?.find((e) => e?._status === "published") || null;
|
|
2385
|
-
if (r?._id)
|
|
2386
|
-
...
|
|
2385
|
+
if (r?._id) E.current = {
|
|
2386
|
+
...E.current || {},
|
|
2387
2387
|
...r
|
|
2388
|
-
},
|
|
2388
|
+
}, y({
|
|
2389
2389
|
contentId: null,
|
|
2390
2390
|
publishedId: r._id
|
|
2391
2391
|
});
|
|
2392
2392
|
else {
|
|
2393
2393
|
let e = Array.isArray(n) ? n?.filter((e) => e?._status === "draft") : [], t = e?.[e.length - 1] || null;
|
|
2394
|
-
t?._id && (
|
|
2395
|
-
...
|
|
2394
|
+
t?._id && (E.current = {
|
|
2395
|
+
...E.current || {},
|
|
2396
2396
|
...t
|
|
2397
|
-
},
|
|
2397
|
+
}, y({
|
|
2398
2398
|
contentId: t._id,
|
|
2399
2399
|
publishedId: null
|
|
2400
2400
|
}));
|
|
2401
2401
|
}
|
|
2402
2402
|
}).catch((e) => (c?.logger?.error("Failed to get draft entry", { exception: e }), null)).finally(() => {
|
|
2403
|
-
|
|
2403
|
+
O.current = { ...E.current }, N.reset({ ...E?.current }), i?.(E.current), x(!1);
|
|
2404
2404
|
});
|
|
2405
2405
|
return;
|
|
2406
2406
|
}
|
|
2407
2407
|
let t = ii(o?.key);
|
|
2408
|
-
t && (
|
|
2409
|
-
...
|
|
2408
|
+
t && (E.current = {
|
|
2409
|
+
...E.current || {},
|
|
2410
2410
|
...t
|
|
2411
2411
|
});
|
|
2412
2412
|
}
|
|
2413
2413
|
}
|
|
2414
|
-
|
|
2414
|
+
O.current = { ...E.current }, N.reset({ ...E?.current }), i?.(E.current);
|
|
2415
2415
|
}
|
|
2416
2416
|
}, [o, f]), L(() => {
|
|
2417
|
-
let { isSubmitSuccessful: e, isValid: t } =
|
|
2418
|
-
e && t && (
|
|
2419
|
-
...
|
|
2417
|
+
let { isSubmitSuccessful: e, isValid: t } = P;
|
|
2418
|
+
e && t && (O.current = { ...E.current }, N.reset({
|
|
2419
|
+
...E?.current,
|
|
2420
2420
|
__captcha: "verified"
|
|
2421
|
-
}), i?.(
|
|
2422
|
-
}, [
|
|
2423
|
-
o && (
|
|
2424
|
-
}, [
|
|
2425
|
-
methods:
|
|
2426
|
-
isLoading:
|
|
2427
|
-
isError:
|
|
2428
|
-
contentId:
|
|
2429
|
-
publishedId:
|
|
2430
|
-
allFormValues:
|
|
2421
|
+
}), i?.(E.current));
|
|
2422
|
+
}, [P]), L(() => {
|
|
2423
|
+
o && (v.contentId || v.publishedId) && oi(o?.key);
|
|
2424
|
+
}, [v]), {
|
|
2425
|
+
methods: N,
|
|
2426
|
+
isLoading: b,
|
|
2427
|
+
isError: S,
|
|
2428
|
+
contentId: v.contentId,
|
|
2429
|
+
publishedId: v.publishedId,
|
|
2430
|
+
allFormValues: E.current,
|
|
2431
2431
|
handleContentId: (e) => {
|
|
2432
|
-
e && e !==
|
|
2432
|
+
e && e !== v.contentId && !v.publishedId && y({
|
|
2433
2433
|
contentId: e,
|
|
2434
2434
|
publishedId: null
|
|
2435
2435
|
});
|
|
2436
2436
|
},
|
|
2437
|
-
appendFormValues:
|
|
2437
|
+
appendFormValues: F,
|
|
2438
2438
|
submitToRemote: async (e) => {
|
|
2439
|
-
if (
|
|
2440
|
-
let e = nt(
|
|
2441
|
-
if (t =
|
|
2439
|
+
if (F(e), !(g || !c?.collection || !s)) try {
|
|
2440
|
+
let e = nt(E?.current, s, O.current), t = null;
|
|
2441
|
+
if (t = v.publishedId ? await c?.collection?.editDraftEntry(s?.key, v.publishedId, e) : v.contentId ? await c?.collection?.submitDraftEntry(s?.key, e) : await c?.collection?.saveCollectionData({
|
|
2442
2442
|
collection_id: s?.id,
|
|
2443
2443
|
data: e
|
|
2444
2444
|
}), t?.content?.data) {
|
|
2445
2445
|
let e = t?.content?.meta?.booking_config?.enabled;
|
|
2446
|
-
l?.showSuccessToast && !(l?.suppressOnBooking && e) && k(l.successToastText || "Form submitted successfully."),
|
|
2446
|
+
l?.showSuccessToast && !(l?.suppressOnBooking && e) && k(l.successToastText || "Form submitted successfully."), E.current = {}, M(), oi(s?.key), y({
|
|
2447
2447
|
contentId: null,
|
|
2448
2448
|
publishedId: null
|
|
2449
|
-
}),
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2449
|
+
}), _?.hideSuccessScreen || T(!0);
|
|
2450
|
+
try {
|
|
2451
|
+
u && u({
|
|
2452
|
+
schemaId: s?.id,
|
|
2453
|
+
response: t?.content?.data,
|
|
2454
|
+
meta: t?.content?.meta
|
|
2455
|
+
}), n && n();
|
|
2456
|
+
} catch (e) {
|
|
2457
|
+
c?.logger?.error("Form success callback threw after a saved entry", { exception: J(e) });
|
|
2458
|
+
}
|
|
2454
2459
|
return;
|
|
2455
2460
|
}
|
|
2456
2461
|
throw Error("Failed to save form details, API response invalid");
|
|
2457
2462
|
} catch (e) {
|
|
2458
|
-
D(e), e instanceof G ? (e?.hasFieldErrors && a && ni(e?.fieldErrors,
|
|
2463
|
+
D(e), e instanceof G ? (e?.hasFieldErrors && a && ni(e?.fieldErrors, N.setError), r && r(e.fieldErrors || []), d && d(e)) : d && d(e?.response?.data || e);
|
|
2459
2464
|
}
|
|
2460
2465
|
},
|
|
2461
|
-
showSuccessOverlay:
|
|
2462
|
-
dismissSuccessOverlay: () =>
|
|
2466
|
+
showSuccessOverlay: w,
|
|
2467
|
+
dismissSuccessOverlay: () => T(!1)
|
|
2463
2468
|
};
|
|
2464
2469
|
}, ci = "_1jed92w2", li = "_1jed92w3 _1jed92w1", ui = "_1jed92w4 _1jed92w1", di = "_1jed92w5 _1jed92w1", fi = "_1jed92w6 _1jed92w1", pi = () => {
|
|
2465
2470
|
let e = E(1), t;
|
package/index.d.ts
CHANGED
|
@@ -1544,6 +1544,12 @@ declare interface ILevoFormContext {
|
|
|
1544
1544
|
uiConfig?: {
|
|
1545
1545
|
hideSectionHeadings?: boolean;
|
|
1546
1546
|
hideFormHeading?: boolean;
|
|
1547
|
+
/**
|
|
1548
|
+
* Suppress the built-in success overlay, for hosts that render their own confirmation
|
|
1549
|
+
* (or navigate away) from `onSuccess`. The form still submits and still resets itself —
|
|
1550
|
+
* it just stays on screen instead of being replaced by the thank-you card.
|
|
1551
|
+
*/
|
|
1552
|
+
hideSuccessScreen?: boolean;
|
|
1547
1553
|
};
|
|
1548
1554
|
toastConfig?: {
|
|
1549
1555
|
showSuccessToast?: boolean;
|
package/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { l as e, r as t } from "./dist-
|
|
2
|
+
import { l as e, r as t } from "./dist-CveI0e3_.js";
|
|
3
3
|
import { r as n } from "./themeMapping-Bi9Rcr5G-C7UXWE6o.js";
|
|
4
|
-
import { _ as r, a as i, b as a, c as o, d as s, f as c, g as l, h as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b, v as x, y as S } from "./Button-
|
|
4
|
+
import { _ as r, a as i, b as a, c as o, d as s, f as c, g as l, h as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b, v as x, y as S } from "./Button-CYXSFoBr.js";
|
|
5
5
|
import { n as C, t as w } from "./AuthProvider-B5NfFwbG.js";
|
|
6
6
|
import { n as T, t as E } from "./ModalManager-CzH36UIk.js";
|
|
7
7
|
import { t as D } from "./cn-B6c1DjO_.js";
|
|
@@ -4042,7 +4042,7 @@ var Do = ({ site: e }) => {
|
|
|
4042
4042
|
siteSlug: e?.slug,
|
|
4043
4043
|
siteName: e?.name
|
|
4044
4044
|
})] });
|
|
4045
|
-
}, Oo = { loadingContainer: "_loadingContainer_1d4on_1" }, ko = Pe(() => import("./LoginCard-
|
|
4045
|
+
}, Oo = { loadingContainer: "_loadingContainer_1d4on_1" }, ko = Pe(() => import("./LoginCard-HUsLBH9Y.js")), Ao = Pe(() => import("./EntryCard-Btvieg4y.js")), jo = Pe(() => import("./MessageCard-Nsxr98n6.js")), Mo = Pe(() => import("./ProfileCard-WC8XhXzF.js")), No = {
|
|
4046
4046
|
"authentication.NOT_LOGGED_IN": ({ logo: e, siteName: t, page: n }) => /* @__PURE__ */ B(je, {
|
|
4047
4047
|
fallback: /* @__PURE__ */ B("div", {}),
|
|
4048
4048
|
children: /* @__PURE__ */ B(ko, {
|
|
@@ -6092,7 +6092,7 @@ var el = d(qc), tl = Ne(({ children: e, className: t, elementKey: n, generatedCl
|
|
|
6092
6092
|
children: [/* @__PURE__ */ B(Vc, { backgroundVideo: a?.backgroundVideo }), e]
|
|
6093
6093
|
}));
|
|
6094
6094
|
tl.displayName = "BaseContainer";
|
|
6095
|
-
var nl = d(tl), rl = Pe(() => import("./dist-
|
|
6095
|
+
var nl = d(tl), rl = Pe(() => import("./dist-CveI0e3_.js").then((e) => e.t).then((e) => ({ default: e.CollectionForm }))), il = d(({ elementKey: e, generatedClassName: t, config: n, className: r, initialValues: i, theme: a, onSubmit: o, isLoading: s }) => /* @__PURE__ */ B("div", {
|
|
6096
6096
|
"data-levo_element_key": e,
|
|
6097
6097
|
className: D(r, t),
|
|
6098
6098
|
children: /* @__PURE__ */ B(je, {
|
|
@@ -6114,7 +6114,7 @@ var nl = d(tl), rl = Pe(() => import("./dist-D5mTOitS.js").then((e) => e.t).then
|
|
|
6114
6114
|
isLoading: s
|
|
6115
6115
|
})
|
|
6116
6116
|
})
|
|
6117
|
-
})), al = Pe(() => import("./dist-
|
|
6117
|
+
})), al = Pe(() => import("./dist-CveI0e3_.js").then((e) => e.t).then((e) => ({ default: e.CollectionFormRenderer }))), ol = Pe(() => import("./bookingCard-CmsUeDr3.js").then((e) => ({ default: e.BookingCard }))), sl = Pe(() => import("./BillingStep-BG4hhiaE.js").then((e) => ({ default: e.BillingStep }))), cl = d(({ elementKey: e, generatedClassName: t, config: r, className: i, initialValues: a, theme: o }) => {
|
|
6118
6118
|
let s = M(), { workspace: c, isLoggedIn: l, isAuthLoaded: u } = C(), d = I(() => {
|
|
6119
6119
|
if (!r?.theme && !o) return;
|
|
6120
6120
|
let e = r?.theme;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@levo-so/studio",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.12",
|
|
4
4
|
"author": "Levo Engineering <devs@theinternetfolks.com>",
|
|
5
5
|
"description": "Levo Studio components and utilities for building block-based pages",
|
|
6
6
|
"type": "module",
|
|
@@ -123,8 +123,8 @@
|
|
|
123
123
|
"react": ">=19",
|
|
124
124
|
"next": ">=14",
|
|
125
125
|
"react-dom": ">=19",
|
|
126
|
-
"@levo-so/
|
|
127
|
-
"@levo-so/
|
|
128
|
-
"@levo-so/
|
|
126
|
+
"@levo-so/insights": "0.3.12",
|
|
127
|
+
"@levo-so/react": "0.3.12",
|
|
128
|
+
"@levo-so/core": "0.3.12"
|
|
129
129
|
}
|
|
130
130
|
}
|