@levo-so/studio 0.1.7 → 0.1.52

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 (51) hide show
  1. package/dist/{Beams-CS3YOY03.js → Beams-CzAwDqou.js} +1 -1
  2. package/dist/{Dots-ZOcduxeG.js → Dots-BgmklWE-.js} +1 -1
  3. package/dist/{Gradient-cEvo0m5K.js → Gradient-Cr9szXfL.js} +1 -1
  4. package/dist/{Grid-IxhqSV77.js → Grid-Cd1uINyX.js} +1 -1
  5. package/dist/{Waves-Dc0a0Nd8.js → Waves-Q3gpYuM2.js} +57 -13
  6. package/dist/bridge/StudioBlockPreview.d.ts +2 -1
  7. package/dist/bridge/StudioPagePreview.d.ts +4 -1
  8. package/dist/bridge/StudioPreview.d.ts +4 -1
  9. package/dist/bridge/constants.d.ts +12 -0
  10. package/dist/bridge/index.d.ts +1 -0
  11. package/dist/bridge/utils.d.ts +1 -0
  12. package/dist/components/LoginForm/GoogleOAuth.d.ts +1 -1
  13. package/dist/components/accessCard/card/index.d.ts +1 -1
  14. package/dist/components/backgroundPresets/Gradient.d.ts +1 -1
  15. package/dist/components/backgroundPresets/presetSystem.d.ts +1 -1
  16. package/dist/components/registerModal/RegisterModal.d.ts +6 -0
  17. package/dist/components/registerModal/RegistrationConfirmationModal.d.ts +8 -0
  18. package/dist/components/registerModal/useCustomDisclosure.d.ts +18 -0
  19. package/dist/components/registerModal/utils.d.ts +2 -0
  20. package/dist/contentEngine/config.d.ts +5 -1
  21. package/dist/contentEngine/content.d.ts +30 -6
  22. package/dist/contentEngine/getPage.d.ts +3 -1
  23. package/dist/contentEngine/head_code.d.ts +2 -2
  24. package/dist/contentEngine/sourceFetcher.d.ts +8 -5
  25. package/dist/contentEngine/types.d.ts +2 -1
  26. package/dist/contentEngine/urlBuilder.d.ts +7 -1
  27. package/dist/core/AccessManager/index.d.ts +4 -2
  28. package/dist/core/LevoPage.d.ts +7 -4
  29. package/dist/elements/Container.d.ts +1 -0
  30. package/dist/elements/accordion/index.d.ts +1 -1
  31. package/dist/elements/dialog/index.d.ts +1 -1
  32. package/dist/elements/popover/index.d.ts +1 -1
  33. package/dist/index-4Hm8Nq1K.js +54 -0
  34. package/dist/index-BEa73Nqa.js +49 -0
  35. package/dist/index-CICXXChN.js +10185 -0
  36. package/dist/index-CpL9yDVW.js +30 -0
  37. package/dist/index-DHHPZcEh.js +38 -0
  38. package/dist/index-FPch-n1w.js +23 -0
  39. package/dist/index.d.ts +1 -0
  40. package/dist/index.js +82 -80
  41. package/dist/interfaces/block.d.ts +1 -1
  42. package/dist/interfaces/levoBlock.d.ts +8 -4
  43. package/dist/interfaces/site.d.ts +6 -7
  44. package/dist/providers/BlockContext.d.ts +1 -0
  45. package/dist/studio.css +1 -0
  46. package/dist/utils/index.d.ts +0 -1
  47. package/dist/utils/withBlockPropsUtils.d.ts +1 -1
  48. package/package.json +8 -7
  49. package/dist/index-CS6HcUVk.js +0 -9640
  50. package/dist/index.css +0 -1
  51. package/dist/utils/levoClient.d.ts +0 -5
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { jsxs as e, jsx as s } from "react/jsx-runtime";
3
+ import { u as i, a } from "./index-CICXXChN.js";
4
+ const g = "_footnote_v8hnh_1", r = "_footnoteText_v8hnh_11", c = "_logoutButton_v8hnh_17", t = {
5
+ footnote: g,
6
+ footnoteText: r,
7
+ logoutButton: c
8
+ }, d = () => {
9
+ const { account: o, isSignOutLoading: n } = i(), { signOut: u } = a(), l = () => {
10
+ u();
11
+ };
12
+ return o != null && o.email ? /* @__PURE__ */ e("div", { className: t.footnote, children: [
13
+ /* @__PURE__ */ e("span", { className: t.footnoteText, children: [
14
+ "You are logged in as ",
15
+ /* @__PURE__ */ s("strong", { children: o.email })
16
+ ] }),
17
+ /* @__PURE__ */ s(
18
+ "button",
19
+ {
20
+ className: t.logoutButton,
21
+ onClick: l,
22
+ disabled: n,
23
+ children: n ? "Logging out..." : "Logout"
24
+ }
25
+ )
26
+ ] }) : null;
27
+ };
28
+ export {
29
+ d as M
30
+ };
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
3
+ const e = "_container_t4trl_1", _ = "_card_t4trl_16", i = "_cardSm_t4trl_27", m = "_cardMd_t4trl_31", g = "_cardLg_t4trl_35", C = "_logoContainer_t4trl_39", S = "_logo_t4trl_39", N = "_content_t4trl_53", t = {
4
+ container: e,
5
+ card: _,
6
+ cardSm: i,
7
+ cardMd: m,
8
+ cardLg: g,
9
+ logoContainer: C,
10
+ logo: S,
11
+ content: N
12
+ }, L = ({
13
+ logo: r,
14
+ siteName: o,
15
+ children: n,
16
+ maxWidth: a = "md",
17
+ className: s = ""
18
+ }) => {
19
+ const d = {
20
+ sm: t.cardSm,
21
+ md: t.cardMd,
22
+ lg: t.cardLg
23
+ }[a];
24
+ return /* @__PURE__ */ c("div", { className: t.container, children: /* @__PURE__ */ l("div", { className: `${t.card} ${d} ${s}`, children: [
25
+ r && /* @__PURE__ */ c("div", { className: t.logoContainer, children: /* @__PURE__ */ c(
26
+ "img",
27
+ {
28
+ className: t.logo,
29
+ src: r,
30
+ alt: o || "Site logo"
31
+ }
32
+ ) }),
33
+ /* @__PURE__ */ c("div", { className: t.content, children: n })
34
+ ] }) });
35
+ };
36
+ export {
37
+ L as A
38
+ };
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { jsxs as r, jsx as t } from "react/jsx-runtime";
3
+ import { L as i } from "./index-CICXXChN.js";
4
+ import { A as n } from "./index-DHHPZcEh.js";
5
+ const a = "_header_s7k8g_1", c = "_title_s7k8g_7", l = "_subtitle_s7k8g_14", d = "_formWrapper_s7k8g_20", e = {
6
+ header: a,
7
+ title: c,
8
+ subtitle: l,
9
+ formWrapper: d
10
+ }, _ = ({ logo: o, siteName: s }) => /* @__PURE__ */ r(n, { logo: o, siteName: s, maxWidth: "sm", children: [
11
+ /* @__PURE__ */ r("div", { className: e.header, children: [
12
+ /* @__PURE__ */ t("h1", { className: e.title, children: "Sign in to continue" }),
13
+ s && /* @__PURE__ */ r("p", { className: e.subtitle, children: [
14
+ "You need to sign in to access this page on",
15
+ " ",
16
+ /* @__PURE__ */ t("strong", { children: s })
17
+ ] })
18
+ ] }),
19
+ /* @__PURE__ */ t("div", { className: e.formWrapper, children: /* @__PURE__ */ t(i, { className: e.form, oAuthTitle: s || "Studio" }) })
20
+ ] });
21
+ export {
22
+ _ as default
23
+ };
package/dist/index.d.ts CHANGED
@@ -12,4 +12,5 @@ export * from './bridge';
12
12
  export * from './contentEngine';
13
13
  export * from './theme/defaultTheme';
14
14
  export * from './components/backgroundPresets/exports';
15
+ export * from './components/registerModal/RegisterModal';
15
16
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { o as s, l as o, A as t, n as r, s as n, av as i, au as g, a as c, h as l, k as u, r as C, t as d, a5 as m, ac as T, B as S, b as h, c as A, d as P, e as p, g as B, f as E, C as v, ah as f, at as L, F as k, H as I, a6 as R, j as y, I as M, i as b, a2 as H, aa as K, ab as O, L as V, M as x, aw as _, ax as F, q as N, P as U, p as D, ag as G, S as w, ai as z, a3 as W, a4 as j, T as q, U as J, ad as X, af as Q, a8 as Y, ae as Z, ao as $, an as aa, a1 as ea, G as sa, a9 as oa, N as ta, a7 as ra, ar as na, K as ia, J as ga, az as ca, aA as la, am as ua, y as Ca, aq as da, ak as ma, ay as Ta, _ as Sa, z as ha, Z as Aa, Y as Pa, a0 as pa, W as Ba, $ as Ea, al as va, as as fa, aj as La, V as ka, X as Ia, aB as Ra, D as ya, x as Ma, w as ba, u as Ha, v as Ka, R as Oa, ap as Va, O as xa, Q as _a, E as Fa } from "./index-CS6HcUVk.js";
1
+ import { q as s, o, A as t, p as r, w as n, ay as i, ax as g, b as l, d as c, j as C, n as u, v as d, x as S, a6 as T, ad as m, B as A, c as E, e as P, f as h, g as B, i as p, h as f, C as v, aj as k, aw as M, F as R, H as y, a7 as I, l as L, I as b, k as H, a3 as K, ab as O, ac as V, t as _, ah as x, M as F, az as D, aA as G, s as N, P as U, r as w, ai as z, aF as W, S as j, ak as q, a4 as J, a5 as X, T as Y, U as Q, ae as Z, ag as $, a9 as aa, af as ea, ar as sa, aq as oa, a2 as ta, J as ra, aa as na, O as ia, a8 as ga, au as la, N as ca, K as Ca, aC as ua, aD as da, ap as Sa, z as Ta, at as ma, an as Aa, aB as Ea, $ as Pa, D as ha, _ as Ba, Z as pa, a1 as fa, X as va, a0 as ka, ao as Ma, av as Ra, am as ya, al as Ia, W as La, Y as ba, aE as Ha, E as Ka, u as Oa, y as Va, V as _a, as as xa, Q as Fa, R as Da, G as Ga } from "./index-CICXXChN.js";
2
2
  export {
3
3
  s as AccordionContent,
4
4
  o as AccordionItem,
@@ -7,88 +7,90 @@ export {
7
7
  n as AuthProvider,
8
8
  i as BUILT_IN_PRESETS,
9
9
  g as BackgroundEffects,
10
- c as BaseButton,
11
- l as BaseHeading,
10
+ l as BaseButton,
11
+ c as BaseContainer,
12
+ C as BaseHeading,
12
13
  u as BaseTypography,
13
- C as BaseUserMenu,
14
- d as BlockProvider,
15
- m as BlockSourceModuleList,
16
- T as BlocksRegistry,
17
- S as Box,
18
- h as Button,
19
- A as Carousel,
20
- P as CarouselContent,
21
- p as CarouselItem,
22
- B as CarouselNext,
23
- E as CarouselPrevious,
14
+ d as BaseUserMenu,
15
+ S as BlockProvider,
16
+ T as BlockSourceModuleList,
17
+ m as BlocksRegistry,
18
+ A as Box,
19
+ E as Button,
20
+ P as Carousel,
21
+ h as CarouselContent,
22
+ B as CarouselItem,
23
+ p as CarouselNext,
24
+ f as CarouselPrevious,
24
25
  v as Container,
25
- f as DATA_ATTRIBUTES,
26
- L as DEFAULT_THEME,
27
- k as Form,
28
- I as Heading,
29
- R as IMembershipAuthenticationMethods,
30
- y as Icon,
31
- M as Iframe,
32
- b as Image,
33
- H as KindList,
34
- K as LevoBlock,
35
- O as LevoPage,
36
- V as Link,
37
- x as Media,
38
- _ as PRESET_CATEGORIES,
39
- F as PRESET_MAP,
26
+ k as DATA_ATTRIBUTES,
27
+ M as DEFAULT_THEME,
28
+ R as Form,
29
+ y as Heading,
30
+ I as IMembershipAuthenticationMethods,
31
+ L as Icon,
32
+ b as Iframe,
33
+ H as Image,
34
+ K as KindList,
35
+ O as LevoBlock,
36
+ V as LevoPage,
37
+ _ as Link,
38
+ x as MESSAGE_TYPES,
39
+ F as Media,
40
+ D as PRESET_CATEGORIES,
41
+ G as PRESET_MAP,
40
42
  N as PopoverContent,
41
43
  U as PopoverRoot,
42
- D as PopoverTrigger,
43
- G as PreviewHighlighter,
44
- w as Section,
45
- z as StudioPreview,
46
- W as StudioWidgetList,
47
- j as StudioWidgetMap,
48
- q as Typography,
49
- J as UserMenu,
50
- X as blocksRegistry,
51
- Q as colorOptions,
52
- Y as convertKeysToPascalCase,
53
- Z as cssOptionsMap,
54
- $ as fetchCollectionSchema,
55
- aa as fetchSource,
56
- ea as generateAccentColor,
57
- sa as generateAnimationProps,
58
- oa as generateDefaultContent,
59
- ta as generateElementClassName,
60
- ra as generateSchemaFromJSX,
61
- na as generateThemeVariables,
62
- ia as generateVariantClasses,
63
- ga as getAnimateValue,
64
- ca as getAvailableCategories,
65
- la as getEffectConfigFromPresetId,
66
- ua as getInitialPageContent,
67
- Ca as getNestedValue,
68
- da as getPageData,
69
- ma as getPageSource,
70
- Ta as getPresetsByCategory,
71
- Sa as hexToOKLCH,
44
+ w as PopoverTrigger,
45
+ z as PreviewHighlighter,
46
+ W as RegisterModal,
47
+ j as Section,
48
+ q as StudioPreview,
49
+ J as StudioWidgetList,
50
+ X as StudioWidgetMap,
51
+ Y as Typography,
52
+ Q as UserMenu,
53
+ Z as blocksRegistry,
54
+ $ as colorOptions,
55
+ aa as convertKeysToPascalCase,
56
+ ea as cssOptionsMap,
57
+ sa as fetchCollectionSchema,
58
+ oa as fetchSource,
59
+ ta as generateAccentColor,
60
+ ra as generateAnimationProps,
61
+ na as generateDefaultContent,
62
+ ia as generateElementClassName,
63
+ ga as generateSchemaFromJSX,
64
+ la as generateThemeVariables,
65
+ ca as generateVariantClasses,
66
+ Ca as getAnimateValue,
67
+ ua as getAvailableCategories,
68
+ da as getEffectConfigFromPresetId,
69
+ Sa as getInitialPageContent,
70
+ Ta as getNestedValue,
71
+ ma as getPageData,
72
+ Aa as getPageSource,
73
+ Ea as getPresetsByCategory,
74
+ Pa as hexToOKLCH,
72
75
  ha as isConfigWithVariants,
73
- Aa as isValidOKLCH,
74
- Pa as oklchStringToRGBA,
75
- pa as oklchToRGBA,
76
- Ba as oklchToString,
77
- Ea as parseOKLCHString,
78
- va as parseVariablesFromResolvedSource,
79
- fa as processTheme,
80
- La as resolveVariables,
81
- ka as rgbaToOKLCH,
82
- Ia as rgbaToOKLCHString,
83
- Ra as sanitizeBackgroundEffectConfig,
84
- ya as sanitizeElementKey,
85
- Ma as setStudioLevoClient,
86
- ba as studioLevoClient,
87
- Ha as useAuth,
88
- Ka as useBlockContext,
89
- Oa as useCommonProps,
90
- Va as useContentEngine,
91
- xa as useGeneratedClassName,
92
- _a as useMotionComponent,
93
- Fa as useStableAnimationConfig
76
+ Ba as isValidOKLCH,
77
+ pa as oklchStringToRGBA,
78
+ fa as oklchToRGBA,
79
+ va as oklchToString,
80
+ ka as parseOKLCHString,
81
+ Ma as parseVariablesFromResolvedSource,
82
+ Ra as processTheme,
83
+ ya as resolveStyles,
84
+ Ia as resolveVariables,
85
+ La as rgbaToOKLCH,
86
+ ba as rgbaToOKLCHString,
87
+ Ha as sanitizeBackgroundEffectConfig,
88
+ Ka as sanitizeElementKey,
89
+ Oa as useAuth,
90
+ Va as useBlockContext,
91
+ _a as useCommonProps,
92
+ xa as useContentEngine,
93
+ Fa as useGeneratedClassName,
94
+ Da as useMotionComponent,
95
+ Ga as useStableAnimationConfig
94
96
  };
@@ -1,6 +1,6 @@
1
- import { IBlockSource, IFieldConfig } from './levoBlock';
2
1
  import { ComponentType, LazyExoticComponent } from 'react';
3
2
  import { CSSStyleKeys } from '../pixel/propertyMap';
3
+ import { IBlockSource, IFieldConfig } from './levoBlock';
4
4
  export type IStyles = {
5
5
  [key in CSSStyleKeys]?: string;
6
6
  } & {
@@ -6,7 +6,7 @@ export interface IBlockLayouts {
6
6
  title: string;
7
7
  styles: IElementStyle;
8
8
  content: any;
9
- config: Record<string, IFieldConfig>;
9
+ config: any;
10
10
  }
11
11
  export interface IBlock {
12
12
  category_id: string;
@@ -131,8 +131,6 @@ export interface IFieldConfig {
131
131
  };
132
132
  backgroundEffects?: BackgroundEffectConfig;
133
133
  backgroundPresetId?: string;
134
- action_type?: "link" | "email" | "phone" | "login" | "none";
135
- action_value?: string;
136
134
  carousel?: {
137
135
  autoScroll?: boolean;
138
136
  loop?: boolean;
@@ -145,6 +143,9 @@ export interface IFieldConfig {
145
143
  };
146
144
  image?: {
147
145
  high_priority?: boolean;
146
+ width?: string;
147
+ height?: string;
148
+ alt?: string;
148
149
  };
149
150
  media?: {
150
151
  autoPlay?: boolean;
@@ -153,6 +154,9 @@ export interface IFieldConfig {
153
154
  loop?: boolean;
154
155
  poster?: IMediaObject;
155
156
  high_priority?: boolean;
157
+ width?: string;
158
+ height?: string;
159
+ alt?: string;
156
160
  };
157
161
  custom_html?: {
158
162
  before?: string;
@@ -174,7 +178,7 @@ export interface IBlockInstance {
174
178
  };
175
179
  layout: string | null;
176
180
  category: string;
177
- config: Record<string, IFieldConfig>;
181
+ config: Record<string, IFieldConfig | Record<string, IFieldConfig>[]>;
178
182
  styles: IElementStyle;
179
183
  theme: Record<string, any>;
180
184
  view_count: number;
@@ -23,6 +23,10 @@ export interface IPageStatMetric {
23
23
  past: number | null;
24
24
  change: number | null;
25
25
  }
26
+ export interface IPageSettings {
27
+ structured_data_json?: string;
28
+ [key: string]: any;
29
+ }
26
30
  export interface IPage {
27
31
  id: string;
28
32
  workspace_id: string;
@@ -38,10 +42,7 @@ export interface IPage {
38
42
  tags: IStudioTags[];
39
43
  pagespeed_score: IPageSpeedData;
40
44
  access: IPageAccess[];
41
- settings: {
42
- structured_data_json?: string;
43
- [key: string]: any;
44
- };
45
+ settings: IPageSettings;
45
46
  theme: {
46
47
  colors: {
47
48
  brand: {
@@ -87,9 +88,7 @@ export interface IPageMeta {
87
88
  }
88
89
  export type IPageKind = "blog.page" | "collection.page" | "event.page" | "static";
89
90
  export interface IPageExpanded extends IPage {
90
- workspace: IWorkspace;
91
- site: ISite;
92
- source?: IPageSource[];
91
+ source: IPageSource[];
93
92
  kind: IPageKind;
94
93
  blocks: (IBlockInstance & {
95
94
  isPreview?: boolean;
@@ -6,6 +6,7 @@ type BlockContextType = {
6
6
  blockData?: IBlockInstance;
7
7
  pageContext?: IPageContext;
8
8
  blockContext?: IBlockContext;
9
+ isBuilder?: boolean;
9
10
  };
10
11
  export declare const BlockProvider: React.FC<{
11
12
  children: React.ReactNode;
@@ -0,0 +1 @@
1
+ ._Overlay_w33mq_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background-color:#00000080;animation:_overlayShow_w33mq_1 .15s cubic-bezier(.16,1,.3,1)}._Overlay_w33mq_1[data-state=open]{animation:_fadeIn_w33mq_1 .2s ease-out}._Overlay_w33mq_1[data-state=closed]{animation:_fadeOut_w33mq_1 .2s ease-out}._Content_w33mq_17{position:fixed;left:50%;top:50%;z-index:50;display:grid;width:100%;max-width:calc(100% - 2rem);transform:translate(-50%,-50%);gap:1rem;border-radius:.5rem;border:1px solid var(--border);background:var(--background);padding:1.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;transition-duration:.2s}@media (min-width: 640px){._Content_w33mq_17{max-width:32rem}}._Content_w33mq_17[data-state=open]{animation:_contentShow_w33mq_1 .2s cubic-bezier(.16,1,.3,1)}._Content_w33mq_17[data-state=closed]{animation:_contentHide_w33mq_1 .2s cubic-bezier(.16,1,.3,1)}._Content_w33mq_17:focus{outline:none}._Title_w33mq_55{font-size:1.125rem;font-weight:600;line-height:1}._Description_w33mq_61{font-size:.875rem;color:var(--muted-foreground)}._Button_w33mq_66{all:unset;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;padding:0 15px;font-size:15px;line-height:1;font-weight:500;height:35px;-webkit-user-select:none;user-select:none}._Button_w33mq_66:focus:not(:focus-visible){outline:0}._Button_w33mq_66:focus-visible{outline:2px solid var(--violet-6);outline-offset:1px}._Button_w33mq_66.violet{background-color:var(--violet-4);color:var(--violet-12);outline-color:var(--violet-6)}._Button_w33mq_66.violet:hover{background-color:var(--mauve-3)}._Button_w33mq_66.violet:focus{box-shadow:0 0 0 2px #000}._Button_w33mq_66.green{background-color:var(--green-4);color:var(--green-11);outline-color:var(--green-7)}._Button_w33mq_66.green:hover{background-color:var(--green-5)}._CloseButton_w33mq_109{position:absolute;right:1rem;top:1rem;opacity:.7;border-radius:.25rem;transition:opacity .2s;outline:none;background:transparent;border:none;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center}._CloseButton_w33mq_109:hover{opacity:1}._CloseButton_w33mq_109:focus{outline:2px solid var(--ring);outline-offset:2px}._CloseButton_w33mq_109:disabled{pointer-events:none}._CloseButton_w33mq_109[data-state=open]{background-color:var(--accent);color:var(--muted-foreground)}._CloseButton_w33mq_109 svg:not([class*=size-]){width:1rem;height:1rem}._CloseButton_w33mq_109 svg{pointer-events:none;flex-shrink:0}._Fieldset_w33mq_154{all:unset;display:flex;gap:20px;align-items:center;margin-bottom:15px}._Label_w33mq_162{font-size:15px;color:var(--violet-11);width:90px;text-align:right}._Input_w33mq_169{all:unset;width:100%;flex:1;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;padding:0 10px;font-size:15px;line-height:1;color:var(--violet-11);box-shadow:0 0 0 1px var(--violet-7);height:35px}._Input_w33mq_169:focus{box-shadow:0 0 0 2px var(--violet-8)}._Header_w33mq_188{display:flex;flex-direction:column;gap:.5rem;text-align:center}@media (min-width: 640px){._Header_w33mq_188{text-align:left}}._Footer_w33mq_201{display:flex;flex-direction:column-reverse;gap:.5rem}@media (min-width: 640px){._Footer_w33mq_201{flex-direction:row;justify-content:flex-end}}._SrOnly_w33mq_214{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes _fadeIn_w33mq_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_w33mq_1{0%{opacity:1}to{opacity:0}}@keyframes _contentShow_w33mq_1{0%{opacity:0;transform:translate(-50%,-48%) scale(.95)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes _contentHide_w33mq_1{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-48%) scale(.95)}}._button_1je4h_2{display:flex;align-items:center;justify-content:center;font-size:.875rem;border-radius:.375rem;font-weight:500;transition:all .15s ease-in-out;cursor:pointer;border:1px solid transparent;background-color:var(--color-brand);color:var(--color-brand-foreground)}._button_1je4h_2:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-brand)}._button_1je4h_2:disabled{pointer-events:none;opacity:.6;cursor:not-allowed}._button_1je4h_2[data-variant=default]:hover:not(:disabled){background-color:var(--color-brand);opacity:.9}._button_1je4h_2[data-variant=outline]{border:1px solid #d1d5db;background-color:transparent;color:#374151}._button_1je4h_2[data-variant=outline]:hover:not(:disabled){background-color:#f3f4f6;color:#111827}._button_1je4h_2[data-variant=destructive]{background-color:#ef4444;color:#fff}._button_1je4h_2[data-variant=destructive]:hover:not(:disabled){background-color:#dc2626}._button_1je4h_2[data-variant=success]{background-color:#dcfce7;color:#166534;border:1px solid #16a34a}._button_1je4h_2[data-size=default]{height:2.25rem;padding:0 .75rem}._button_1je4h_2[data-size=lg]{height:2.5rem;padding:.5rem 1rem}._content_1je4h_70{display:flex;align-items:center;gap:.5rem}._icon_1je4h_77{display:flex;align-items:center;justify-content:center}._icon_1je4h_77 svg{width:1rem;height:1rem}._spinner_1je4h_89{animation:_spin_1je4h_89 1s linear infinite}@keyframes _spin_1je4h_89{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._iconEnter_1je4h_103{animation:_iconScale_1je4h_1 .3s ease-in-out}@keyframes _iconScale_1je4h_1{0%{transform:scale(0)}50%{transform:scale(1.1)}to{transform:scale(1)}}._text_1je4h_119{white-space:nowrap}._label_wx5fd_5{display:block;margin-bottom:.25rem;font-size:.875rem;font-weight:500;color:#374151}._inputWrapper_wx5fd_13{display:flex;gap:.5rem}._input_wx5fd_13{flex:1;border-radius:.375rem;border:1px solid #d1d5db;padding:.5rem .75rem;font-size:.875rem;transition:all .15s ease-in-out}._input_wx5fd_13:focus{border-color:var(--color-brand);outline:none;box-shadow:0 0 0 1px var(--color-brand)}._input_wx5fd_13:disabled{background-color:#f9fafb;color:#6b7280}._editButton_wx5fd_38{font-size:.875rem}._label_1c9qn_5{display:block;margin-bottom:.25rem;font-size:.875rem;font-weight:500;color:#374151}._inputGroup_1c9qn_13{display:flex;gap:.5rem;margin-bottom:1rem}._input_1c9qn_13{width:3rem;height:3rem;text-align:center;border-radius:.375rem;border:1px solid #d1d5db;font-size:1.125rem;font-weight:500;transition:all .15s ease-in-out}._input_1c9qn_13:focus{border-color:var(--color-brand);outline:none;box-shadow:0 0 0 1px var(--color-brand)}._resendButton_1c9qn_36{font-size:.875rem;color:var(--color-brand);background:none;border:none;cursor:pointer;transition:color .15s ease-in-out}._resendButton_1c9qn_36:hover:not(:disabled){color:var(--color-brand);opacity:.8}._resendButton_1c9qn_36:disabled{opacity:.5;cursor:not-allowed}._errorContainer_11r7a_5{margin-bottom:1rem}._divider_11r7a_9{margin:1rem 0;display:flex;align-items:center}._dividerLine_11r7a_15{flex:1;height:1px;background-color:#e5e7eb}._dividerText_11r7a_21{padding:0 .75rem;font-size:.875rem;color:#6b7280}._formSection_11r7a_27{display:flex;flex-direction:column;gap:1rem}._fullWidthButton_11r7a_36{width:100%}._oauthContainer_11r7a_41{display:flex;flex:1;flex-direction:column;gap:.5rem;justify-content:space-evenly;align-items:center}._oauthContainer_11r7a_41>div{width:100%}._googleButton_11r7a_54{display:inline-flex;align-items:center;justify-content:center;width:100%;height:2.5rem;padding:0 1rem;border:1px solid var(--border);border-radius:.375rem;background:var(--background);font-size:.875rem;font-weight:500;color:var(--foreground);cursor:pointer;transition:background-color .2s}._googleButton_11r7a_54:hover{background:var(--accent)}._googleButton_11r7a_54:disabled{opacity:.5;cursor:not-allowed}._googleIcon_11r7a_80{width:1.25rem;height:1.25rem;margin-right:.5rem}._errorContainer_11r7a_5{margin-top:1rem;width:100%}._errorContent_11r7a_92{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;background:oklch(from var(--destructive) l c h / .1);border:1px solid oklch(from var(--destructive) l c h / .3);border-radius:.375rem}._errorIcon_11r7a_102{flex-shrink:0;font-size:1.125rem;color:var(--destructive);margin-top:.125rem}._errorText_11r7a_109{flex:1;min-width:0}._errorTitle_11r7a_114{font-size:.875rem;font-weight:600;color:var(--destructive);margin-bottom:.25rem}._errorMessage_11r7a_121{font-size:.875rem;color:var(--destructive);line-height:1.4}._errorDismiss_11r7a_127{flex-shrink:0;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:.25rem;color:var(--destructive);cursor:pointer;font-size:1.125rem;line-height:1;transition:background-color .2s}._errorDismiss_11r7a_127:hover{background:oklch(from var(--destructive) l c h / .1)}._errorDismiss_11r7a_127:focus{outline:none;background:oklch(from var(--destructive) l c h / .1);box-shadow:0 0 0 2px oklch(from var(--ring) l c h / .2)}._container_301k2_1{display:flex;flex-direction:column;gap:1rem;width:100%}._divider_301k2_8{position:relative;height:1px;width:100%;background-color:var(--border)}._dividerText_301k2_15{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);white-space:nowrap;background:var(--background);padding:0 1rem;font-size:.875rem;color:var(--muted-foreground)}._formSection_301k2_27{display:flex;flex-direction:column;gap:1rem;width:100%}._googleButton_301k2_34{display:inline-flex;align-items:center;justify-content:center;width:100%;height:2.5rem;padding:0 1rem;border:1px solid var(--border);border-radius:.375rem;background:var(--background);font-size:.875rem;font-weight:500;color:var(--foreground);cursor:pointer;transition:background-color .2s}._googleButton_301k2_34:hover{background:var(--accent)}._googleButton_301k2_34:disabled{opacity:.5;cursor:not-allowed}._googleIcon_301k2_60{width:1.25rem;height:1.25rem;margin-right:.5rem}._primaryButton_301k2_66{width:100%}._errorContainer_301k2_70{margin-top:1rem;width:100%}._errorContent_301k2_75{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;background:oklch(from var(--destructive) l c h / .1);border:1px solid oklch(from var(--destructive) l c h / .3);border-radius:.375rem}._errorIcon_301k2_85{flex-shrink:0;font-size:1.125rem;color:var(--destructive);margin-top:.125rem}._errorText_301k2_92{flex:1;min-width:0}._errorTitle_301k2_97{font-size:.875rem;font-weight:600;color:var(--destructive);margin-bottom:.25rem}._errorMessage_301k2_104{font-size:.875rem;color:var(--destructive);line-height:1.4}._errorDismiss_301k2_110{flex-shrink:0;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:.25rem;color:var(--destructive);cursor:pointer;font-size:1.125rem;line-height:1;transition:background-color .2s}._errorDismiss_301k2_110:hover{background:oklch(from var(--destructive) l c h / .1)}._errorDismiss_301k2_110:focus{outline:none;background:oklch(from var(--destructive) l c h / .1);box-shadow:0 0 0 2px oklch(from var(--ring) l c h / .2)}._accordionItem_ol1j4_1{overflow:hidden}._accordionItem_ol1j4_1:focus-within{position:relative;z-index:1}._accordionHeader_ol1j4_10{display:flex}._accordionTrigger_ol1j4_14{flex:1;display:flex;align-items:center;justify-content:space-between}._accordionContent_ol1j4_21{overflow:hidden}._accordionContent_ol1j4_21[data-state=open]{animation:_slideDown_ol1j4_1 .3s cubic-bezier(.87,0,.13,1)}._accordionContent_ol1j4_21[data-state=closed]{animation:_slideUp_ol1j4_1 .3s cubic-bezier(.87,0,.13,1)}._accordionChevron_ol1j4_33{flex-shrink:0;transition:transform .3s cubic-bezier(.87,0,.13,1)}._accordionTrigger_ol1j4_14[data-state=open]>._accordionChevron_ol1j4_33{transform:rotate(180deg)}@keyframes _slideDown_ol1j4_1{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes _slideUp_ol1j4_1{0%{height:var(--radix-accordion-content-height)}to{height:0}}._popoverContent_1lphk_1{z-index:50;width:18rem;border-radius:.375rem;border:1px solid var(--border);background-color:var(--popover);padding:1rem;color:var(--popover-foreground);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;outline:none}._popoverContent_1lphk_1[data-state=open]{animation:_fadeIn_1lphk_1 .2s ease-out,_zoomIn_1lphk_1 .2s ease-out}._popoverContent_1lphk_1[data-state=closed]{animation:_fadeOut_1lphk_1 .2s ease-out,_zoomOut_1lphk_1 .2s ease-out}._popoverContent_1lphk_1[data-side=bottom]{animation:_slideFromTop_1lphk_1 .2s ease-out}._popoverContent_1lphk_1[data-side=left]{animation:_slideFromRight_1lphk_1 .2s ease-out}._popoverContent_1lphk_1[data-side=right]{animation:_slideFromLeft_1lphk_1 .2s ease-out}._popoverContent_1lphk_1[data-side=top]{animation:_slideFromBottom_1lphk_1 .2s ease-out}@keyframes _fadeIn_1lphk_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_1lphk_1{0%{opacity:1}to{opacity:0}}@keyframes _zoomIn_1lphk_1{0%{transform:scale(.95)}to{transform:scale(1)}}@keyframes _zoomOut_1lphk_1{0%{transform:scale(1)}to{transform:scale(.95)}}@keyframes _slideFromTop_1lphk_1{0%{transform:translateY(-.5rem)}to{transform:translateY(0)}}@keyframes _slideFromRight_1lphk_1{0%{transform:translate(.5rem)}to{transform:translate(0)}}@keyframes _slideFromLeft_1lphk_1{0%{transform:translate(-.5rem)}to{transform:translate(0)}}@keyframes _slideFromBottom_1lphk_1{0%{transform:translateY(.5rem)}to{transform:translateY(0)}}._userMenu_366z5_1{position:relative}._userAvatar_366z5_5{cursor:pointer;transition:opacity .2s ease}._userAvatar_366z5_5:hover{opacity:.8}._avatarCircle_366z5_14{width:40px;height:40px;border-radius:50%;background:var(--color-brand);display:flex;align-items:center;justify-content:center;color:var(--color-brand-foreground);font-weight:600;font-size:14px;-webkit-user-select:none;user-select:none}._userMenuPopover_366z5_28{width:250px;padding:0;border-radius:8px;box-shadow:0 10px 38px -10px #16171859,0 10px 20px -15px #16171833;background:#fff;border:1px solid #e5e7eb}._userMenuHeader_366z5_39{padding:16px;border-bottom:1px solid #f3f4f6}._userInfo_366z5_44{display:flex;align-items:center;gap:12px}._userAvatarSmall_366z5_50{width:32px;height:32px;border-radius:50%;background:var(--color-brand);display:flex;align-items:center;justify-content:center;color:var(--color-brand-foreground);font-weight:600;font-size:12px;-webkit-user-select:none;user-select:none}._userDetails_366z5_64{flex:1;min-width:0}._userName_366z5_69{font-weight:600;font-size:14px;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._userEmail_366z5_78{font-size:12px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._userMenuActions_366z5_86{padding:8px}._userMenuItem_366z5_90{width:100%;display:flex;align-items:center;gap:12px;padding:10px 12px;border:none;background:none;border-radius:6px;cursor:pointer;transition:all .2s ease;font-size:14px;color:#374151;text-align:left}._userMenuItem_366z5_90:hover{background-color:#f9fafb;color:#111827}._userMenuItem_366z5_90:active{background-color:#f3f4f6}._logoutItem_366z5_115:hover{background-color:#fef2f2;color:#dc2626}._logoutItem_366z5_115:active{background-color:#fee2e2}._spinner_366z5_124{width:16px;height:16px;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:_spin_366z5_124 1s linear infinite}@keyframes _spin_366z5_124{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._userMenuItem_366z5_90:disabled{opacity:.6;cursor:not-allowed}._userMenuItem_366z5_90:disabled:hover{background-color:transparent;color:inherit}._logoutItem_366z5_115:disabled:hover{background-color:transparent;color:inherit}._loadingContainer_1d4on_1{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;gap:1rem;font-size:1.4rem;z-index:50}._container_t4trl_1{position:fixed;top:0;left:0;right:0;bottom:0;background:color-mix(in oklch,var(--color-brand) 5%,transparent);display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50}._card_t4trl_16{background:#fff;border-radius:1rem;box-shadow:0 25px 50px #0000001a;width:100%;overflow:hidden;max-height:90vh;display:flex;flex-direction:column}._cardSm_t4trl_27{max-width:28rem}._cardMd_t4trl_31{max-width:32rem}._cardLg_t4trl_35{max-width:36rem}._logoContainer_t4trl_39{display:flex;justify-content:center;padding:2rem 2rem 1rem;background:color-mix(in oklch,var(--color-brand) 15%,transparent);flex-shrink:0}._logo_t4trl_39{height:3rem;width:auto;object-fit:contain}._content_t4trl_53{flex:1;display:flex;flex-direction:column;overflow-y:auto;padding:2rem 0}@media (max-width: 640px){._container_t4trl_1{padding:.5rem}._card_t4trl_16{max-width:100%;max-height:95vh}._content_t4trl_53{padding:1.5rem 0}._logoContainer_t4trl_39{padding:1.5rem 1.5rem 1rem}._logo_t4trl_39{height:2.5rem}}._header_s7k8g_1{text-align:center;margin-bottom:2rem;padding:0 2rem}._title_s7k8g_7{font-size:1.5rem;font-weight:600;color:#1f2937;margin:0 0 .5rem}._subtitle_s7k8g_14{color:#6b7280;margin:0;line-height:1.5}._formWrapper_s7k8g_20{padding:0 2rem}@media (max-width: 640px){._header_s7k8g_1,._formWrapper_s7k8g_20{padding:0 1.5rem}._title_s7k8g_7{font-size:1.25rem}}._footnote_v8hnh_1{margin:0 2rem;padding-top:1rem;border-top:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between;gap:1rem}._footnoteText_v8hnh_11{font-size:.875rem;color:#6b7280;flex:1}._logoutButton_v8hnh_17{padding:.25rem .75rem;font-size:.875rem;font-weight:500;color:#374151;background:transparent;border:1px solid #d1d5db;border-radius:.375rem;cursor:pointer;transition:all .2s;white-space:nowrap}._logoutButton_v8hnh_17:hover{background:#f3f4f6;border-color:#9ca3af}._logoutButton_v8hnh_17:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 640px){._footnote_v8hnh_1{margin:1.5rem 1.5rem 0;flex-direction:column;align-items:flex-start;gap:.5rem}._footnoteText_v8hnh_11{font-size:.8125rem}._logoutButton_v8hnh_17{align-self:stretch;text-align:center}}._header_emo7t_1{text-align:center;margin-bottom:1rem;flex-shrink:0;padding:0 2rem}._title_emo7t_8{font-size:1.5rem;font-weight:600;color:#1f2937;margin:0 0 .5rem}._subtitle_emo7t_15{color:#6b7280;margin:0;line-height:1.5}._formContainer_emo7t_21{flex:1;margin-top:1rem;padding:0 2rem}@media (max-width: 640px){._header_emo7t_1,._formContainer_emo7t_21{padding:0 1.5rem}._title_emo7t_8{font-size:1.25rem}}._header_1vjty_1{margin-bottom:1.5rem;padding:0 2rem}._iconContainer_1vjty_6{display:flex;justify-content:center;margin-bottom:1rem}._icon_1vjty_6{width:3rem;height:3rem;color:#000}._title_1vjty_18{font-size:1.5rem;font-weight:600;color:var(--color-text-1);text-align:center;margin:0 0 .5rem}._subtitle_1vjty_26{color:var(--color-text-2);text-align:center;margin:0;line-height:1.5}._messageContainer_1vjty_33{padding:1rem;background:#f9fafb;border-radius:.5rem;border-left:4px solid #ef4444;margin:0 2rem 2rem}._message_1vjty_33{color:#374151;margin:0;line-height:1.6}@media (max-width: 640px){._header_1vjty_1{padding:0 1.5rem}._messageContainer_1vjty_33{margin:0 1.5rem}._icon_1vjty_6{width:2.5rem;height:2.5rem}._title_1vjty_18{font-size:1.25rem}}
@@ -1,3 +1,2 @@
1
- export * from './levoClient';
2
1
  export * from './withBlockPropsUtils';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { ComponentType } from 'react';
2
- import { IFieldConfig, AnimationConfig } from '../interfaces';
3
2
  import { MotionProps } from 'motion/react';
3
+ import { IFieldConfig, AnimationConfig } from '../interfaces';
4
4
  type MutableDeep<T> = T extends object ? {
5
5
  -readonly [K in keyof T]: MutableDeep<T[K]>;
6
6
  } : T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@levo-so/studio",
3
- "version": "0.1.7",
3
+ "version": "0.1.52",
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",
@@ -29,23 +29,24 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@emotion/is-prop-valid": "1.3.1",
32
- "@radix-ui/react-accordion": "1.2.0",
33
- "@radix-ui/react-dialog": "1.1.1",
34
- "@radix-ui/react-popover": "1.1.1",
35
32
  "@theinternetfolks/mate": "1.0.4",
36
33
  "class-variance-authority": "0.7.0",
37
34
  "culori": "4.0.1",
35
+ "dayjs": "1.11.12",
38
36
  "deepmerge-ts": "7.1.5",
39
37
  "embla-carousel-auto-scroll": "8.1.8",
40
38
  "embla-carousel-autoplay": "8.6.0",
41
39
  "embla-carousel-react": "8.1.8",
42
40
  "embla-carousel-wheel-gestures": "8.0.1",
43
41
  "fast-deep-equal": "3.1.3",
42
+ "formik": "2.4.6",
44
43
  "html-react-parser": "5.1.12",
45
44
  "isomorphic-dompurify": "2.14.0",
46
45
  "lucide-react": "0.424.0",
47
46
  "motion": "12.23.12",
47
+ "radix-ui": "1.4.3",
48
48
  "react-icons": "5.2.1",
49
+ "react-razorpay": "3.0.1",
49
50
  "use-debounce": "10.0.2"
50
51
  },
51
52
  "devDependencies": {
@@ -58,8 +59,8 @@
58
59
  "@types/react-dom": "19.1.6",
59
60
  "@vitejs/plugin-react": "4.3.4",
60
61
  "rollup-preserve-directives": "1.1.1",
61
- "typescript": "5.8.2",
62
- "vite": "6.0.5",
62
+ "typescript": "5.8.3",
63
+ "vite": "6.3.3",
63
64
  "vite-plugin-dts": "4.1.0"
64
65
  },
65
66
  "main": "./dist/index.js",
@@ -70,6 +71,6 @@
70
71
  "types": "./dist/index.d.ts",
71
72
  "default": "./dist/index.js"
72
73
  },
73
- "./index.css": "./dist/index.css"
74
+ "./index.css": "./dist/studio.css"
74
75
  }
75
76
  }