@simple-builder/react 1.2.9 → 1.3.0

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 (98) hide show
  1. package/dist/{build-container-client-VF3DTHKE.mjs → build-container-client-5QC5KVS3.mjs} +215 -215
  2. package/dist/build-container-client-D2ZD6IEH.css +1964 -0
  3. package/dist/{build-container-client-O3HCUDB7.js → build-container-client-NXIMV3RF.js} +293 -293
  4. package/dist/{builder-content-325KIPAU.mjs → builder-content-3H7GF3KF.mjs} +3 -3
  5. package/dist/{builder-content-CUJJ3KBR.js → builder-content-BIVYFWCC.js} +7 -7
  6. package/dist/builder-content-NFFJ4NAB.css +1964 -0
  7. package/dist/{chunk-IACBZNOK.js → chunk-2CPAROZB.js} +7 -7
  8. package/dist/{chunk-2DLJX5FY.mjs → chunk-B5R6QY7N.mjs} +7 -7
  9. package/dist/{chunk-5DXQZNUR.mjs → chunk-CJGHP5Q7.mjs} +25 -19
  10. package/dist/{chunk-5N4LAZ6V.js → chunk-WI3YU7TV.js} +3 -3
  11. package/dist/{chunk-3F3TNWYK.mjs → chunk-XSG7W73Z.mjs} +2 -2
  12. package/dist/{chunk-6NZWMSQR.js → chunk-YKPZPQ5D.js} +29 -23
  13. package/dist/index.css +1920 -1486
  14. package/dist/index.js +6 -6
  15. package/dist/index.mjs +2 -2
  16. package/package.json +4 -4
  17. package/dist/build-container-client-56IGH4EB.mjs +0 -2263
  18. package/dist/build-container-client-6D4M5MV6.mjs +0 -2259
  19. package/dist/build-container-client-6NICVHM7.css +0 -1530
  20. package/dist/build-container-client-7UASGAWO.mjs +0 -2264
  21. package/dist/build-container-client-FP6NTFZ7.js +0 -2298
  22. package/dist/build-container-client-IC4ZMQPB.js +0 -2300
  23. package/dist/build-container-client-JR4HENF4.mjs +0 -2261
  24. package/dist/build-container-client-JS3CR4W3.js +0 -2299
  25. package/dist/build-container-client-JXYQOZHZ.js +0 -2295
  26. package/dist/build-container-client-OANZW6DH.mjs +0 -2263
  27. package/dist/build-container-client-QBXLJYQD.js +0 -2299
  28. package/dist/build-container-client-QOFTIHCU.js +0 -2297
  29. package/dist/build-container-client-XNI5DVSE.mjs +0 -2279
  30. package/dist/build-container-client-YSPLIQZC.mjs +0 -2262
  31. package/dist/build-container-client-YTZ4C67E.mjs +0 -2265
  32. package/dist/build-container-client-Z34EUPR3.js +0 -2301
  33. package/dist/build-container-client-ZXB5JG67.js +0 -2315
  34. package/dist/builder-content-5K55QBEE.js +0 -42
  35. package/dist/builder-content-5K7B4FXR.js +0 -42
  36. package/dist/builder-content-7CYIKIWQ.mjs +0 -20
  37. package/dist/builder-content-EHVMYKSR.mjs +0 -20
  38. package/dist/builder-content-IQHALH5A.js +0 -42
  39. package/dist/builder-content-J6G2PNIM.js +0 -42
  40. package/dist/builder-content-JQ7BYR4W.mjs +0 -20
  41. package/dist/builder-content-KWK44AH6.mjs +0 -20
  42. package/dist/builder-content-LYSSA6KK.js +0 -42
  43. package/dist/builder-content-MPQ7ZQN4.js +0 -42
  44. package/dist/builder-content-OE75E24Z.mjs +0 -20
  45. package/dist/builder-content-P24OTLH4.css +0 -1530
  46. package/dist/builder-content-QFRPA4VE.js +0 -42
  47. package/dist/builder-content-S2ZNOULV.mjs +0 -20
  48. package/dist/builder-content-STUVQ4ME.mjs +0 -20
  49. package/dist/builder-content-WJFD3ACD.mjs +0 -20
  50. package/dist/builder-content-ZHXFSCT7.js +0 -42
  51. package/dist/chunk-2GRDEACJ.js +0 -153
  52. package/dist/chunk-2S5KDJXM.js +0 -263
  53. package/dist/chunk-2UYKRF3Y.js +0 -263
  54. package/dist/chunk-5NN2XSII.mjs +0 -238
  55. package/dist/chunk-5VQCJART.js +0 -153
  56. package/dist/chunk-75X4HNGS.mjs +0 -238
  57. package/dist/chunk-7DFHZYGR.js +0 -263
  58. package/dist/chunk-7J7CMYXS.mjs +0 -20
  59. package/dist/chunk-BUELIHBX.mjs +0 -238
  60. package/dist/chunk-DMNRRIPC.js +0 -42
  61. package/dist/chunk-EMZAPBOH.mjs +0 -20
  62. package/dist/chunk-FKVC2UHD.js +0 -42
  63. package/dist/chunk-FN6K4WJP.mjs +0 -20
  64. package/dist/chunk-G6MYXYJU.mjs +0 -238
  65. package/dist/chunk-GVPZDUDM.js +0 -42
  66. package/dist/chunk-HA4DTJA7.mjs +0 -123
  67. package/dist/chunk-I4TPSTXB.js +0 -263
  68. package/dist/chunk-IVF3GTYS.js +0 -263
  69. package/dist/chunk-JDB6GNKI.js +0 -263
  70. package/dist/chunk-KC4V2ZJN.mjs +0 -123
  71. package/dist/chunk-KS4VUS45.mjs +0 -238
  72. package/dist/chunk-LNSOKXFY.mjs +0 -20
  73. package/dist/chunk-LPZDTDBB.js +0 -153
  74. package/dist/chunk-NJ6FM7SJ.mjs +0 -123
  75. package/dist/chunk-OOIADGIA.js +0 -153
  76. package/dist/chunk-ORODN5Q7.js +0 -153
  77. package/dist/chunk-PFSFBCPI.mjs +0 -123
  78. package/dist/chunk-QEQT2EER.mjs +0 -238
  79. package/dist/chunk-RCDOLMDG.js +0 -263
  80. package/dist/chunk-RFPQNWBX.mjs +0 -123
  81. package/dist/chunk-RTB6I3Q2.js +0 -153
  82. package/dist/chunk-RUBQ6OAO.mjs +0 -238
  83. package/dist/chunk-S4IIRN4J.mjs +0 -20
  84. package/dist/chunk-SMRPMB3V.js +0 -153
  85. package/dist/chunk-TF7VKEU2.mjs +0 -123
  86. package/dist/chunk-TPRY6DEO.js +0 -153
  87. package/dist/chunk-TSIU64AJ.mjs +0 -238
  88. package/dist/chunk-TWGYIJD2.js +0 -42
  89. package/dist/chunk-UFWIAKEA.mjs +0 -20
  90. package/dist/chunk-UH23D2JA.mjs +0 -123
  91. package/dist/chunk-UYVCZD2U.mjs +0 -20
  92. package/dist/chunk-WP7KTUTL.js +0 -42
  93. package/dist/chunk-WQ376VV2.js +0 -263
  94. package/dist/chunk-WUYG7TZ5.js +0 -42
  95. package/dist/chunk-XFIY7HQO.mjs +0 -123
  96. package/dist/chunk-XJ4ZJCQS.js +0 -42
  97. package/dist/chunk-XULCJNV7.mjs +0 -20
  98. package/dist/chunk-YMC3DDLP.js +0 -42
@@ -1,123 +0,0 @@
1
- import * as React3 from 'react';
2
- import { createElement } from 'react';
3
- import NextImage from 'next/image';
4
- import { clsx } from 'clsx';
5
- import { extendTailwindMerge } from 'tailwind-merge';
6
- import { createTV } from 'tailwind-variants';
7
-
8
- // src/lib/builder.ts
9
- var builder = /* @__PURE__ */ (() => {
10
- const components = [];
11
- return {
12
- register: (component, config) => {
13
- if (components.find(({ name }) => name === config.name)) {
14
- console.log(
15
- `[simple-builder]: Component ${config.name} already registered.`
16
- );
17
- return;
18
- }
19
- components.push({
20
- component,
21
- ...config
22
- });
23
- },
24
- getComponents: () => components,
25
- getComponent: (name) => {
26
- return components.find((c) => c.name === name);
27
- },
28
- bindComponent: ({ content, ...block }, edit) => {
29
- const component = components.find(({ name }) => name === block.component);
30
- if (!component) {
31
- throw new Error(
32
- `[simple-builder]: Component ${block.component} not found`
33
- );
34
- }
35
- const Element = createElement(component.component, {
36
- key: block.id,
37
- builder: { id: block.id, content, edit },
38
- ...block.props
39
- });
40
- return Element;
41
- }
42
- };
43
- })();
44
- var Image = (props) => {
45
- if (typeof NextImage !== "undefined") {
46
- return /* @__PURE__ */ React3.createElement(NextImage, { ...props });
47
- }
48
- return /* @__PURE__ */ React3.createElement("img", { ...props });
49
- };
50
- var twMerge = extendTailwindMerge({
51
- prefix: "sb-"
52
- });
53
- function cn(...inputs) {
54
- return twMerge(clsx(inputs));
55
- }
56
- var tv = createTV({
57
- twMergeConfig: {
58
- prefix: "sb-"
59
- }
60
- });
61
- var insertAt = (items, index, item) => {
62
- return Array.isArray(items) ? [...items.slice(0, index), item, ...items.slice(index)] : [item];
63
- };
64
-
65
- // src/components/design-wrapper.tsx
66
- var DesignWrapper = (props) => {
67
- const { children, className, building = false } = props;
68
- const { background } = props.styles?.desktop ?? {};
69
- const matches = typeof background === "string" ? background.match(/url\(["']?(.*?)["']?\)/) : void 0;
70
- const src = matches ? matches[1] : void 0;
71
- const desktopStyles = props.styles?.desktop ?? {};
72
- const mobileStyles = props.styles?.mobile ?? {};
73
- const container = props.styles?.container ?? true;
74
- const hidden = props.styles?.hidden ?? "never";
75
- const id = React3.useId().replace(/[^a-zA-Z0-9]/g, "");
76
- let hiddenClass = "";
77
- switch (hidden) {
78
- case "always":
79
- hiddenClass = building ? "sb-opacity-30" : "sb-hidden";
80
- break;
81
- case "mobile":
82
- hiddenClass = building ? "max-md:sb-opacity-30" : "max-md:sb-hidden";
83
- break;
84
- case "desktop":
85
- hiddenClass = building ? "md:sb-opacity-30" : "md:sb-hidden";
86
- break;
87
- case "never":
88
- hiddenClass = "";
89
- break;
90
- }
91
- return /* @__PURE__ */ React3.createElement("div", { id, className: cn("sb-relative", className, hiddenClass) }, src && /* @__PURE__ */ React3.createElement(
92
- Image,
93
- {
94
- src,
95
- alt: "",
96
- fill: true,
97
- className: "sb-object-cover sb-absolute sb-inset-0 sb-pointer-events-none sb--z-[1]"
98
- }
99
- ), container ? /* @__PURE__ */ React3.createElement("div", { className: "container sb-mx-auto" }, children) : children, /* @__PURE__ */ React3.createElement("style", null, `
100
- #${id} {
101
- ${Object.entries(desktopStyles).filter(([key]) => !(key === "background" && src)).map(([key, value]) => `${key}: ${value};`).join(" ")}
102
- }
103
-
104
- @media (max-width: 1024px) {
105
- #${id} {
106
- ${Object.entries(mobileStyles).filter(([key]) => !(key === "background" && src)).map(([key, value]) => `${key}: ${value}; `).join(" ")}
107
- }
108
- }
109
- `.replace(/\s\s+/g, " ")));
110
- };
111
- var BuildContainerInner = React3.lazy(
112
- () => import('./build-container-client-JR4HENF4.mjs')
113
- );
114
- var BuildContainer = (props) => {
115
- const { content, edit, name } = props;
116
- const items = Array.isArray(content) ? content : content?.[name] || [];
117
- if (!edit) {
118
- return items.map((item) => /* @__PURE__ */ React3.createElement(DesignWrapper, { styles: item.styles }, builder.bindComponent(item, true)));
119
- }
120
- return /* @__PURE__ */ React3.createElement(React3.Suspense, { fallback: /* @__PURE__ */ React3.createElement("div", null, "Loading...") }, /* @__PURE__ */ React3.createElement(BuildContainerInner, { ...props }));
121
- };
122
-
123
- export { BuildContainer, DesignWrapper, Image, builder, cn, insertAt, tv };
@@ -1,153 +0,0 @@
1
- 'use strict';
2
-
3
- var React3 = require('react');
4
- var NextImage = require('next/image');
5
- var clsx = require('clsx');
6
- var tailwindMerge = require('tailwind-merge');
7
- var tailwindVariants = require('tailwind-variants');
8
-
9
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
-
11
- function _interopNamespace(e) {
12
- if (e && e.__esModule) return e;
13
- var n = Object.create(null);
14
- if (e) {
15
- Object.keys(e).forEach(function (k) {
16
- if (k !== 'default') {
17
- var d = Object.getOwnPropertyDescriptor(e, k);
18
- Object.defineProperty(n, k, d.get ? d : {
19
- enumerable: true,
20
- get: function () { return e[k]; }
21
- });
22
- }
23
- });
24
- }
25
- n.default = e;
26
- return Object.freeze(n);
27
- }
28
-
29
- var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
30
- var NextImage__default = /*#__PURE__*/_interopDefault(NextImage);
31
-
32
- // src/lib/builder.ts
33
- var builder = /* @__PURE__ */ (() => {
34
- const components = [];
35
- return {
36
- register: (component, config) => {
37
- if (components.find(({ name }) => name === config.name)) {
38
- console.log(
39
- `[simple-builder]: Component ${config.name} already registered.`
40
- );
41
- return;
42
- }
43
- components.push({
44
- component,
45
- ...config
46
- });
47
- },
48
- getComponents: () => components,
49
- getComponent: (name) => {
50
- return components.find((c) => c.name === name);
51
- },
52
- bindComponent: ({ content, ...block }, edit) => {
53
- const component = components.find(({ name }) => name === block.component);
54
- if (!component) {
55
- throw new Error(
56
- `[simple-builder]: Component ${block.component} not found`
57
- );
58
- }
59
- const Element = React3.createElement(component.component, {
60
- key: block.id,
61
- builder: { id: block.id, content, edit },
62
- ...block.props
63
- });
64
- return Element;
65
- }
66
- };
67
- })();
68
- var Image = (props) => {
69
- if (typeof NextImage__default.default !== "undefined") {
70
- return /* @__PURE__ */ React3__namespace.createElement(NextImage__default.default, { ...props });
71
- }
72
- return /* @__PURE__ */ React3__namespace.createElement("img", { ...props });
73
- };
74
- var twMerge = tailwindMerge.extendTailwindMerge({
75
- prefix: "sb-"
76
- });
77
- function cn(...inputs) {
78
- return twMerge(clsx.clsx(inputs));
79
- }
80
- var tv = tailwindVariants.createTV({
81
- twMergeConfig: {
82
- prefix: "sb-"
83
- }
84
- });
85
- var insertAt = (items, index, item) => {
86
- return Array.isArray(items) ? [...items.slice(0, index), item, ...items.slice(index)] : [item];
87
- };
88
-
89
- // src/components/design-wrapper.tsx
90
- var DesignWrapper = (props) => {
91
- const { children, className, building = false } = props;
92
- const { background } = props.styles?.desktop ?? {};
93
- const matches = typeof background === "string" ? background.match(/url\(["']?(.*?)["']?\)/) : void 0;
94
- const src = matches ? matches[1] : void 0;
95
- const desktopStyles = props.styles?.desktop ?? {};
96
- const mobileStyles = props.styles?.mobile ?? {};
97
- const container = props.styles?.container ?? true;
98
- const hidden = props.styles?.hidden ?? "never";
99
- const id = React3__namespace.useId().replace(/[^a-zA-Z0-9]/g, "");
100
- let hiddenClass = "";
101
- switch (hidden) {
102
- case "always":
103
- hiddenClass = building ? "sb-opacity-30" : "sb-hidden";
104
- break;
105
- case "mobile":
106
- hiddenClass = building ? "max-md:sb-opacity-30" : "max-md:sb-hidden";
107
- break;
108
- case "desktop":
109
- hiddenClass = building ? "md:sb-opacity-30" : "md:sb-hidden";
110
- break;
111
- case "never":
112
- hiddenClass = "";
113
- break;
114
- }
115
- return /* @__PURE__ */ React3__namespace.createElement("div", { id, className: cn("sb-relative", className, hiddenClass) }, src && /* @__PURE__ */ React3__namespace.createElement(
116
- Image,
117
- {
118
- src,
119
- alt: "",
120
- fill: true,
121
- className: "sb-object-cover sb-absolute sb-inset-0 sb-pointer-events-none sb--z-[1]"
122
- }
123
- ), container ? /* @__PURE__ */ React3__namespace.createElement("div", { className: "container sb-mx-auto" }, children) : children, /* @__PURE__ */ React3__namespace.createElement("style", null, `
124
- #${id} {
125
- ${Object.entries(desktopStyles).filter(([key]) => !(key === "background" && src)).map(([key, value]) => `${key}: ${value};`).join(" ")}
126
- }
127
-
128
- @media (max-width: 1024px) {
129
- #${id} {
130
- ${Object.entries(mobileStyles).filter(([key]) => !(key === "background" && src)).map(([key, value]) => `${key}: ${value}; `).join(" ")}
131
- }
132
- }
133
- `.replace(/\s\s+/g, " ")));
134
- };
135
- var BuildContainerInner = React3__namespace.lazy(
136
- () => import('./build-container-client-O3HCUDB7.js')
137
- );
138
- var BuildContainer = (props) => {
139
- const { content, edit, name } = props;
140
- const items = Array.isArray(content) ? content : content?.[name] || [];
141
- if (!edit) {
142
- return items.map((item) => /* @__PURE__ */ React3__namespace.createElement(DesignWrapper, { styles: item.styles }, builder.bindComponent(item, true)));
143
- }
144
- return /* @__PURE__ */ React3__namespace.createElement(React3__namespace.Suspense, { fallback: /* @__PURE__ */ React3__namespace.createElement("div", null, "Loading...") }, /* @__PURE__ */ React3__namespace.createElement(BuildContainerInner, { ...props }));
145
- };
146
-
147
- exports.BuildContainer = BuildContainer;
148
- exports.DesignWrapper = DesignWrapper;
149
- exports.Image = Image;
150
- exports.builder = builder;
151
- exports.cn = cn;
152
- exports.insertAt = insertAt;
153
- exports.tv = tv;
@@ -1,238 +0,0 @@
1
- import { cn, builder, insertAt } from './chunk-KC4V2ZJN.mjs';
2
- import * as React from 'react';
3
- import { Slot } from '@radix-ui/react-slot';
4
- import { cva } from 'class-variance-authority';
5
-
6
- var BuilderContext = React.createContext(
7
- null
8
- );
9
- var BuilderProvider = (props) => {
10
- const url = props.url ?? "/api/simple-builder";
11
- const [content, setContent] = React.useState(
12
- props.content ?? []
13
- );
14
- const getItem = React.useCallback(
15
- (id) => {
16
- return findRecursive(content, (item) => item.id === id);
17
- },
18
- [content]
19
- );
20
- const patchItem = React.useCallback(
21
- (id, patch) => {
22
- setContent(
23
- (content2) => mapRecursive(content2, (item) => {
24
- if (item.id === id) {
25
- return {
26
- ...item,
27
- ...patch
28
- };
29
- }
30
- return item;
31
- })
32
- );
33
- },
34
- [setContent, mapRecursive]
35
- );
36
- const addContent = React.useCallback(
37
- (name, container, parent, index = 0) => {
38
- const component = builder.getComponent(name);
39
- if (!component) {
40
- throw new Error(`[simple-builder]: Component "${name}" not found`);
41
- }
42
- const entry = {
43
- id: crypto.randomUUID(),
44
- component: component.name,
45
- ...parent && { parent },
46
- ...component.inputs && {
47
- props: component.inputs.reduce(
48
- (acc, input) => ({
49
- ...acc,
50
- [input.name]: input.defaultValue
51
- }),
52
- {}
53
- )
54
- },
55
- ...component.defaultStyles && {
56
- styles: component.defaultStyles
57
- }
58
- };
59
- if (!parent) {
60
- setContent((content2) => insertAt(content2, index, entry));
61
- return;
62
- }
63
- setContent(
64
- (content2) => mapRecursive(content2, (item) => {
65
- if (item.id === parent) {
66
- return {
67
- ...item,
68
- content: {
69
- ...item.content,
70
- [container]: insertAt(item.content?.[container], index, entry)
71
- }
72
- };
73
- }
74
- return item;
75
- })
76
- );
77
- },
78
- [setContent, mapRecursive]
79
- );
80
- const deleteContent = React.useCallback(
81
- (id) => setContent((prev) => filterRecursive(prev, (item) => item.id !== id)),
82
- [setContent, filterRecursive]
83
- );
84
- const bringUp = React.useCallback(
85
- (id) => {
86
- setContent(
87
- (content2) => mapRecursive(content2, (item, index, arr) => {
88
- if (item.id === id && index > 0) {
89
- return arr[index - 1];
90
- }
91
- if (arr[index + 1]?.id === id) {
92
- return arr[index + 1];
93
- }
94
- return item;
95
- })
96
- );
97
- },
98
- [setContent, mapRecursive]
99
- );
100
- const bringDown = React.useCallback(
101
- (id) => {
102
- setContent(
103
- (content2) => mapRecursive(content2, (item, index, arr) => {
104
- if (item.id === id && index < arr.length - 1) {
105
- return arr[index + 1];
106
- }
107
- if (arr[index - 1]?.id === id) {
108
- return arr[index - 1];
109
- }
110
- return item;
111
- })
112
- );
113
- },
114
- [setContent, mapRecursive]
115
- );
116
- const save = React.useCallback(async () => {
117
- const slug = window.location.pathname;
118
- await fetch(`${url}/page/update`, {
119
- method: "POST",
120
- body: JSON.stringify({
121
- slug,
122
- content
123
- })
124
- });
125
- }, [content]);
126
- return /* @__PURE__ */ React.createElement(
127
- BuilderContext.Provider,
128
- {
129
- value: {
130
- url,
131
- content,
132
- setContent,
133
- getItem,
134
- patchItem,
135
- addContent,
136
- bringUp,
137
- bringDown,
138
- deleteContent,
139
- save
140
- }
141
- },
142
- props.children
143
- );
144
- };
145
- var useBuilder = () => {
146
- const context = React.useContext(BuilderContext);
147
- if (!context) {
148
- throw new Error(
149
- "[simple-builder]: useBuilder must be used within a BuilderProvider"
150
- );
151
- }
152
- return context;
153
- };
154
- var filterRecursive = (items, predicate, key = "content") => {
155
- return items.filter(predicate).map((item) => ({
156
- ...item,
157
- ...item[key] && {
158
- [key]: Object.entries(item[key] ?? {}).reduce(
159
- (acc, [name, content]) => ({
160
- ...acc,
161
- [name]: filterRecursive(content, predicate, key)
162
- }),
163
- {}
164
- )
165
- }
166
- }));
167
- };
168
- var mapRecursive = (items, predicate, key = "content") => {
169
- return items.map(predicate).map((item) => ({
170
- ...item,
171
- ...item[key] && {
172
- [key]: Object.entries(item[key] ?? {}).reduce(
173
- (acc, [name, content]) => ({
174
- ...acc,
175
- [name]: mapRecursive(content, predicate, key)
176
- }),
177
- {}
178
- )
179
- }
180
- }));
181
- };
182
- var findRecursive = (items, predicate, key = "content") => {
183
- for (const item of items) {
184
- if (predicate(item)) {
185
- return item;
186
- }
187
- if (item[key]) {
188
- const keys = Object.keys(item[key] ?? {});
189
- for (const x of keys) {
190
- const found = findRecursive(item[key][x], predicate, key);
191
- if (found) {
192
- return found;
193
- }
194
- }
195
- }
196
- }
197
- };
198
- var buttonVariants = cva(
199
- "sb-inline-flex sb-items-center sb-justify-center sb-gap-2 sb-whitespace-nowrap sb-rounded-md sb-text-sm sb-font-medium sb-transition-colors focus-visible:sb-outline-none focus-visible:sb-ring-1 focus-visible:sb-ring-ring disabled:sb-pointer-events-none disabled:sb-opacity-50 [&_svg]:sb-pointer-events-none [&_svg]:sb-size-4 [&_svg]:sb-shrink-0",
200
- {
201
- variants: {
202
- variant: {
203
- default: "sb-bg-primary sb-text-primary-foreground sb-shadow hover:sb-bg-primary/90",
204
- destructive: "sb-bg-destructive sb-text-destructive-foreground sb-shadow-sm hover:sb-bg-destructive/90",
205
- outline: "sb-border sb-border-input sb-bg-background sb-shadow-sm hover:sb-bg-accent hover:sb-text-accent-foreground",
206
- secondary: "sb-bg-secondary sb-text-secondary-foreground sb-shadow-sm hover:sb-bg-secondary/80",
207
- ghost: "hover:sb-bg-accent hover:sb-text-accent-foreground",
208
- link: "sb-text-primary sb-underline-offset-4 hover:sb-underline"
209
- },
210
- size: {
211
- default: "sb-h-9 sb-px-4 sb-py-2",
212
- sm: "sb-h-8 sb-rounded-md sb-px-3 sb-text-xs",
213
- lg: "sb-h-10 sb-rounded-md sb-px-8",
214
- icon: "sb-h-9 sb-w-9"
215
- }
216
- },
217
- defaultVariants: {
218
- variant: "default",
219
- size: "default"
220
- }
221
- }
222
- );
223
- var Button = React.forwardRef(
224
- ({ className, variant, size, asChild = false, ...props }, ref) => {
225
- const Comp = asChild ? Slot : "button";
226
- return /* @__PURE__ */ React.createElement(
227
- Comp,
228
- {
229
- className: cn(buttonVariants({ variant, size, className })),
230
- ref,
231
- ...props
232
- }
233
- );
234
- }
235
- );
236
- Button.displayName = "Button";
237
-
238
- export { BuilderProvider, Button, buttonVariants, useBuilder };
@@ -1,42 +0,0 @@
1
- 'use strict';
2
-
3
- var chunk5VQCJART_js = require('./chunk-5VQCJART.js');
4
- var React = require('react');
5
-
6
- function _interopNamespace(e) {
7
- if (e && e.__esModule) return e;
8
- var n = Object.create(null);
9
- if (e) {
10
- Object.keys(e).forEach(function (k) {
11
- if (k !== 'default') {
12
- var d = Object.getOwnPropertyDescriptor(e, k);
13
- Object.defineProperty(n, k, d.get ? d : {
14
- enumerable: true,
15
- get: function () { return e[k]; }
16
- });
17
- }
18
- });
19
- }
20
- n.default = e;
21
- return Object.freeze(n);
22
- }
23
-
24
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
25
-
26
- var StaticContent = (props) => {
27
- return /* @__PURE__ */ React__namespace.createElement(
28
- chunk5VQCJART_js.BuildContainer,
29
- {
30
- name: "root",
31
- edit: false,
32
- multiple: true,
33
- content: props.content || []
34
- }
35
- );
36
- };
37
-
38
- // src/index.ts
39
- var BuilderContent = React.lazy(() => import('./builder-content-5K55QBEE.js'));
40
-
41
- exports.BuilderContent = BuilderContent;
42
- exports.StaticContent = StaticContent;
@@ -1,20 +0,0 @@
1
- import { BuildContainer } from './chunk-UH23D2JA.mjs';
2
- import * as React from 'react';
3
- import { lazy } from 'react';
4
-
5
- var StaticContent = (props) => {
6
- return /* @__PURE__ */ React.createElement(
7
- BuildContainer,
8
- {
9
- name: "root",
10
- edit: false,
11
- multiple: true,
12
- content: props.content || []
13
- }
14
- );
15
- };
16
-
17
- // src/index.ts
18
- var BuilderContent = lazy(() => import('./builder-content-EHVMYKSR.mjs'));
19
-
20
- export { BuilderContent, StaticContent };
@@ -1,123 +0,0 @@
1
- import * as React3 from 'react';
2
- import { createElement } from 'react';
3
- import NextImage from 'next/image';
4
- import { clsx } from 'clsx';
5
- import { extendTailwindMerge } from 'tailwind-merge';
6
- import { createTV } from 'tailwind-variants';
7
-
8
- // src/lib/builder.ts
9
- var builder = /* @__PURE__ */ (() => {
10
- const components = [];
11
- return {
12
- register: (component, config) => {
13
- if (components.find(({ name }) => name === config.name)) {
14
- console.log(
15
- `[simple-builder]: Component ${config.name} already registered.`
16
- );
17
- return;
18
- }
19
- components.push({
20
- component,
21
- ...config
22
- });
23
- },
24
- getComponents: () => components,
25
- getComponent: (name) => {
26
- return components.find((c) => c.name === name);
27
- },
28
- bindComponent: ({ content, ...block }, edit) => {
29
- const component = components.find(({ name }) => name === block.component);
30
- if (!component) {
31
- throw new Error(
32
- `[simple-builder]: Component ${block.component} not found`
33
- );
34
- }
35
- const Element = createElement(component.component, {
36
- key: block.id,
37
- builder: { id: block.id, content, edit },
38
- ...block.props
39
- });
40
- return Element;
41
- }
42
- };
43
- })();
44
- var Image = (props) => {
45
- if (typeof NextImage !== "undefined") {
46
- return /* @__PURE__ */ React3.createElement(NextImage, { ...props });
47
- }
48
- return /* @__PURE__ */ React3.createElement("img", { ...props });
49
- };
50
- var twMerge = extendTailwindMerge({
51
- prefix: "sb-"
52
- });
53
- function cn(...inputs) {
54
- return twMerge(clsx(inputs));
55
- }
56
- var tv = createTV({
57
- twMergeConfig: {
58
- prefix: "sb-"
59
- }
60
- });
61
- var insertAt = (items, index, item) => {
62
- return Array.isArray(items) ? [...items.slice(0, index), item, ...items.slice(index)] : [item];
63
- };
64
-
65
- // src/components/design-wrapper.tsx
66
- var DesignWrapper = (props) => {
67
- const { children, className, building = false } = props;
68
- const { background } = props.styles?.desktop ?? {};
69
- const matches = typeof background === "string" ? background.match(/url\(["']?(.*?)["']?\)/) : void 0;
70
- const src = matches ? matches[1] : void 0;
71
- const desktopStyles = props.styles?.desktop ?? {};
72
- const mobileStyles = props.styles?.mobile ?? {};
73
- const container = props.styles?.container ?? true;
74
- const hidden = props.styles?.hidden ?? "never";
75
- const id = React3.useId().replace(/[^a-zA-Z0-9]/g, "");
76
- let hiddenClass = "";
77
- switch (hidden) {
78
- case "always":
79
- hiddenClass = building ? "sb-opacity-30" : "sb-hidden";
80
- break;
81
- case "mobile":
82
- hiddenClass = building ? "max-md:sb-opacity-30" : "max-md:sb-hidden";
83
- break;
84
- case "desktop":
85
- hiddenClass = building ? "md:sb-opacity-30" : "md:sb-hidden";
86
- break;
87
- case "never":
88
- hiddenClass = "";
89
- break;
90
- }
91
- return /* @__PURE__ */ React3.createElement("div", { id, className: cn("sb-relative", className, hiddenClass) }, src && /* @__PURE__ */ React3.createElement(
92
- Image,
93
- {
94
- src,
95
- alt: "",
96
- fill: true,
97
- className: "sb-object-cover sb-absolute sb-inset-0 sb-pointer-events-none sb--z-[1]"
98
- }
99
- ), container ? /* @__PURE__ */ React3.createElement("div", { className: "container sb-mx-auto" }, children) : children, /* @__PURE__ */ React3.createElement("style", null, `
100
- #${id} {
101
- ${Object.entries(desktopStyles).filter(([key]) => !(key === "background" && src)).map(([key, value]) => `${key}: ${value};`).join(" ")}
102
- }
103
-
104
- @media (max-width: 1024px) {
105
- #${id} {
106
- ${Object.entries(mobileStyles).filter(([key]) => !(key === "background" && src)).map(([key, value]) => `${key}: ${value}; `).join(" ")}
107
- }
108
- }
109
- `.replace(/\s\s+/g, " ")));
110
- };
111
- var BuildContainerInner = React3.lazy(
112
- () => import('./build-container-client-OANZW6DH.mjs')
113
- );
114
- var BuildContainer = (props) => {
115
- const { content, edit, name } = props;
116
- const items = Array.isArray(content) ? content : content?.[name] || [];
117
- if (!edit) {
118
- return items.map((item) => /* @__PURE__ */ React3.createElement(DesignWrapper, { styles: item.styles }, builder.bindComponent(item, true)));
119
- }
120
- return /* @__PURE__ */ React3.createElement(React3.Suspense, { fallback: /* @__PURE__ */ React3.createElement("div", null, "Loading...") }, /* @__PURE__ */ React3.createElement(BuildContainerInner, { ...props }));
121
- };
122
-
123
- export { BuildContainer, DesignWrapper, Image, builder, cn, insertAt, tv };