@mission-studio/puck 1.0.19 → 1.0.21
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/dist/{chunk-723Z3YKC.mjs → chunk-MWW5LYLN.mjs} +219 -301
- package/dist/chunk-WFLVAZV2.mjs +142 -0
- package/dist/config/server.js +213 -243
- package/dist/config/server.mjs +77 -25
- package/dist/config-entry.js +97 -53
- package/dist/config-entry.mjs +5 -3
- package/dist/index.js +95 -51
- package/dist/index.mjs +5 -3
- package/dist/renderer.d.mts +22 -10
- package/dist/renderer.d.ts +22 -10
- package/dist/renderer.js +95 -51
- package/dist/renderer.mjs +5 -3
- package/package.json +1 -1
package/dist/config/server.js
CHANGED
|
@@ -24,119 +24,8 @@ __export(server_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(server_exports);
|
|
26
26
|
|
|
27
|
-
//
|
|
28
|
-
var
|
|
29
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
30
|
-
var EntriesContext = (0, import_react.createContext)(null);
|
|
31
|
-
function useEntries() {
|
|
32
|
-
const context = (0, import_react.useContext)(EntriesContext);
|
|
33
|
-
if (!context) {
|
|
34
|
-
return {
|
|
35
|
-
entries: [],
|
|
36
|
-
entryNames: [],
|
|
37
|
-
getEntry: () => void 0,
|
|
38
|
-
getEntryValue: () => void 0
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
return context;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// theme/context.tsx
|
|
45
|
-
var import_react2 = require("react");
|
|
46
|
-
|
|
47
|
-
// theme/defaults.ts
|
|
48
|
-
var DEFAULT_THEME = {
|
|
49
|
-
id: "default",
|
|
50
|
-
name: "Default Theme",
|
|
51
|
-
colors: {
|
|
52
|
-
primary: { color: "#3B82F6", opacity: 100 },
|
|
53
|
-
secondary: { color: "#8B5CF6", opacity: 100 },
|
|
54
|
-
accent: { color: "#10B981", opacity: 100 },
|
|
55
|
-
background: { color: "#FFFFFF", opacity: 100 },
|
|
56
|
-
foreground: { color: "#111827", opacity: 100 },
|
|
57
|
-
muted: { color: "#F3F4F6", opacity: 100 }
|
|
58
|
-
},
|
|
59
|
-
typography: {
|
|
60
|
-
fontFamily: {
|
|
61
|
-
heading: "system-ui, sans-serif",
|
|
62
|
-
body: "system-ui, sans-serif"
|
|
63
|
-
},
|
|
64
|
-
fontSize: {
|
|
65
|
-
base: "base",
|
|
66
|
-
heading: "4xl"
|
|
67
|
-
},
|
|
68
|
-
fontWeight: {
|
|
69
|
-
normal: 400,
|
|
70
|
-
heading: 700
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
spacing: {
|
|
74
|
-
xs: 8,
|
|
75
|
-
sm: 12,
|
|
76
|
-
md: 16,
|
|
77
|
-
lg: 24,
|
|
78
|
-
xl: 32
|
|
79
|
-
},
|
|
80
|
-
borders: {
|
|
81
|
-
radiusSmall: 4,
|
|
82
|
-
radiusMedium: 8,
|
|
83
|
-
radiusLarge: 16
|
|
84
|
-
},
|
|
85
|
-
shadows: {
|
|
86
|
-
small: "sm",
|
|
87
|
-
medium: "md",
|
|
88
|
-
large: "lg"
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
// theme/context.tsx
|
|
93
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
94
|
-
var ThemeContext = (0, import_react2.createContext)(null);
|
|
95
|
-
function useTheme() {
|
|
96
|
-
const context = (0, import_react2.useContext)(ThemeContext);
|
|
97
|
-
if (!context) {
|
|
98
|
-
return {
|
|
99
|
-
theme: DEFAULT_THEME,
|
|
100
|
-
resolveColor: (key) => DEFAULT_THEME.colors[key],
|
|
101
|
-
resolveSpacing: (key) => DEFAULT_THEME.spacing[key],
|
|
102
|
-
resolveBorderRadius: (key) => DEFAULT_THEME.borders[key],
|
|
103
|
-
resolveShadow: (key) => DEFAULT_THEME.shadows[key]
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
return context;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// utils/index.ts
|
|
110
|
-
var import_tailwind_merge = require("tailwind-merge");
|
|
111
|
-
var import_clsx = require("clsx");
|
|
112
|
-
function hexToRgba(hex, opacity) {
|
|
113
|
-
if (hex.startsWith("rgba(")) {
|
|
114
|
-
const rgbaMatch = hex.match(
|
|
115
|
-
/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/
|
|
116
|
-
);
|
|
117
|
-
if (rgbaMatch) {
|
|
118
|
-
return `rgba(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]}, ${opacity / 100})`;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (hex.startsWith("rgb(")) {
|
|
122
|
-
const rgbMatch = hex.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
|
|
123
|
-
if (rgbMatch) {
|
|
124
|
-
return `rgba(${rgbMatch[1]}, ${rgbMatch[2]}, ${rgbMatch[3]}, ${opacity / 100})`;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
const sanitized = hex.replace("#", "");
|
|
128
|
-
const r = parseInt(sanitized.slice(0, 2), 16);
|
|
129
|
-
const g = parseInt(sanitized.slice(2, 4), 16);
|
|
130
|
-
const b = parseInt(sanitized.slice(4, 6), 16);
|
|
131
|
-
return `rgba(${r}, ${g}, ${b}, ${opacity / 100})`;
|
|
132
|
-
}
|
|
133
|
-
function cn(...inputs) {
|
|
134
|
-
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// components/page/Heading.tsx
|
|
138
|
-
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
139
|
-
var sizeMap = {
|
|
27
|
+
// components/page/primitives/Heading.ts
|
|
28
|
+
var headingSizeMap = {
|
|
140
29
|
xs: "0.875rem",
|
|
141
30
|
sm: "1rem",
|
|
142
31
|
md: "1.25rem",
|
|
@@ -146,144 +35,132 @@ var sizeMap = {
|
|
|
146
35
|
"3xl": "3rem",
|
|
147
36
|
"4xl": "4rem"
|
|
148
37
|
};
|
|
149
|
-
var
|
|
38
|
+
var headingWeightMap = {
|
|
150
39
|
normal: 400,
|
|
151
40
|
medium: 500,
|
|
152
41
|
semibold: 600,
|
|
153
42
|
bold: 700,
|
|
154
43
|
extrabold: 800
|
|
155
44
|
};
|
|
156
|
-
var
|
|
45
|
+
var headingLetterSpacingMap = {
|
|
157
46
|
tight: "-0.025em",
|
|
158
47
|
normal: "0",
|
|
159
48
|
wide: "0.05em"
|
|
160
49
|
};
|
|
161
|
-
var
|
|
50
|
+
var headingLineHeightMap = {
|
|
162
51
|
tight: "1.1",
|
|
163
52
|
normal: "1.4",
|
|
164
53
|
relaxed: "1.6"
|
|
165
54
|
};
|
|
166
|
-
function
|
|
167
|
-
return
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
55
|
+
function getHeadingStyle(props) {
|
|
56
|
+
return {
|
|
57
|
+
fontSize: headingSizeMap[props.size],
|
|
58
|
+
fontWeight: headingWeightMap[props.weight],
|
|
59
|
+
color: props.color,
|
|
60
|
+
textAlign: props.align,
|
|
61
|
+
letterSpacing: headingLetterSpacingMap[props.letterSpacing],
|
|
62
|
+
lineHeight: headingLineHeightMap[props.lineHeight],
|
|
63
|
+
margin: 0
|
|
64
|
+
};
|
|
171
65
|
}
|
|
66
|
+
|
|
67
|
+
// components/page/astro/Heading.tsx
|
|
68
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
172
69
|
function Heading({
|
|
173
70
|
text,
|
|
174
71
|
level = "h2",
|
|
175
72
|
size = "2xl",
|
|
176
73
|
weight = "bold",
|
|
177
|
-
color,
|
|
74
|
+
color = "rgba(0, 0, 0, 1)",
|
|
178
75
|
align = "left",
|
|
179
76
|
letterSpacing = "normal",
|
|
180
77
|
lineHeight = "tight",
|
|
181
78
|
id
|
|
182
79
|
}) {
|
|
183
|
-
const
|
|
184
|
-
const { getEntryValue } = useEntries();
|
|
185
|
-
const resolvedText = (() => {
|
|
186
|
-
if (!text) return "";
|
|
187
|
-
if (typeof text === "string") return text;
|
|
188
|
-
if (isEntryBoundValue(text)) {
|
|
189
|
-
if (text.useEntry) {
|
|
190
|
-
return String(getEntryValue(text.entryName, text.fieldKey) ?? "");
|
|
191
|
-
}
|
|
192
|
-
return text.value;
|
|
193
|
-
}
|
|
194
|
-
return "";
|
|
195
|
-
})();
|
|
196
|
-
const resolvedColor = (() => {
|
|
197
|
-
if (!color) return resolveColor2("foreground");
|
|
198
|
-
if (typeof color === "string") return { color, opacity: 100 };
|
|
199
|
-
if (isThemeableValue(color)) {
|
|
200
|
-
return color.useTheme ? resolveColor2(color.themeKey) : color.value;
|
|
201
|
-
}
|
|
202
|
-
if ("color" in color) return color;
|
|
203
|
-
return resolveColor2("foreground");
|
|
204
|
-
})();
|
|
80
|
+
const resolvedText = text || "";
|
|
205
81
|
const Tag = level;
|
|
206
|
-
const style = {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
color
|
|
210
|
-
|
|
211
|
-
letterSpacing
|
|
212
|
-
lineHeight
|
|
213
|
-
|
|
214
|
-
};
|
|
82
|
+
const style = getHeadingStyle({
|
|
83
|
+
size,
|
|
84
|
+
weight,
|
|
85
|
+
color,
|
|
86
|
+
align,
|
|
87
|
+
letterSpacing,
|
|
88
|
+
lineHeight
|
|
89
|
+
});
|
|
215
90
|
if (!resolvedText) return null;
|
|
216
|
-
return /* @__PURE__ */ (0,
|
|
91
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tag, { id, style, children: resolvedText });
|
|
217
92
|
}
|
|
218
93
|
|
|
219
|
-
// components/page/Paragraph.
|
|
220
|
-
var
|
|
221
|
-
var sizeMap2 = {
|
|
94
|
+
// components/page/primitives/Paragraph.ts
|
|
95
|
+
var paragraphSizeMap = {
|
|
222
96
|
sm: "0.875rem",
|
|
223
97
|
base: "1rem",
|
|
224
98
|
lg: "1.125rem",
|
|
225
99
|
xl: "1.25rem"
|
|
226
100
|
};
|
|
227
|
-
var
|
|
101
|
+
var paragraphWeightMap = {
|
|
228
102
|
normal: 400,
|
|
229
103
|
medium: 500,
|
|
230
104
|
semibold: 600
|
|
231
105
|
};
|
|
232
|
-
var
|
|
106
|
+
var paragraphLineHeightMap = {
|
|
233
107
|
tight: "1.4",
|
|
234
108
|
normal: "1.6",
|
|
235
109
|
relaxed: "1.75",
|
|
236
110
|
loose: "2"
|
|
237
111
|
};
|
|
238
|
-
function
|
|
239
|
-
return
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
112
|
+
function getParagraphStyle(props) {
|
|
113
|
+
return {
|
|
114
|
+
fontSize: paragraphSizeMap[props.size],
|
|
115
|
+
fontWeight: paragraphWeightMap[props.weight],
|
|
116
|
+
color: props.color,
|
|
117
|
+
textAlign: props.align,
|
|
118
|
+
lineHeight: paragraphLineHeightMap[props.lineHeight],
|
|
119
|
+
maxWidth: props.maxWidth || void 0,
|
|
120
|
+
margin: 0
|
|
121
|
+
};
|
|
243
122
|
}
|
|
123
|
+
|
|
124
|
+
// components/page/astro/Paragraph.tsx
|
|
125
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
244
126
|
function Paragraph({
|
|
245
127
|
text,
|
|
246
128
|
size = "base",
|
|
247
129
|
weight = "normal",
|
|
248
|
-
color,
|
|
130
|
+
color = "rgba(0, 0, 0, 1)",
|
|
249
131
|
align = "left",
|
|
250
132
|
lineHeight = "normal",
|
|
251
133
|
maxWidth,
|
|
252
134
|
id
|
|
253
135
|
}) {
|
|
254
|
-
const
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
return text.value;
|
|
264
|
-
}
|
|
265
|
-
return "";
|
|
266
|
-
})();
|
|
267
|
-
const resolvedColor = (() => {
|
|
268
|
-
if (!color) return resolveColor2("foreground");
|
|
269
|
-
if (typeof color === "string") return { color, opacity: 100 };
|
|
270
|
-
if (isThemeableValue2(color)) {
|
|
271
|
-
return color.useTheme ? resolveColor2(color.themeKey) : color.value;
|
|
272
|
-
}
|
|
273
|
-
if ("color" in color) return color;
|
|
274
|
-
return resolveColor2("foreground");
|
|
275
|
-
})();
|
|
276
|
-
const style = {
|
|
277
|
-
fontSize: sizeMap2[size],
|
|
278
|
-
fontWeight: weightMap2[weight],
|
|
279
|
-
color: hexToRgba(resolvedColor.color, resolvedColor.opacity),
|
|
280
|
-
textAlign: align,
|
|
281
|
-
lineHeight: lineHeightMap2[lineHeight],
|
|
282
|
-
maxWidth: maxWidth || void 0,
|
|
283
|
-
margin: 0
|
|
284
|
-
};
|
|
136
|
+
const resolvedText = text || "";
|
|
137
|
+
const style = getParagraphStyle({
|
|
138
|
+
size,
|
|
139
|
+
weight,
|
|
140
|
+
color,
|
|
141
|
+
align,
|
|
142
|
+
lineHeight,
|
|
143
|
+
maxWidth
|
|
144
|
+
});
|
|
285
145
|
if (!resolvedText) return null;
|
|
286
|
-
return /* @__PURE__ */ (0,
|
|
146
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { id, style, children: resolvedText });
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// entries/context.tsx
|
|
150
|
+
var import_react = require("react");
|
|
151
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
152
|
+
var EntriesContext = (0, import_react.createContext)(null);
|
|
153
|
+
function useEntries() {
|
|
154
|
+
const context = (0, import_react.useContext)(EntriesContext);
|
|
155
|
+
if (!context) {
|
|
156
|
+
return {
|
|
157
|
+
entries: [],
|
|
158
|
+
entryNames: [],
|
|
159
|
+
getEntry: () => void 0,
|
|
160
|
+
getEntryValue: () => void 0
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
return context;
|
|
287
164
|
}
|
|
288
165
|
|
|
289
166
|
// hooks/useGtmEvent.ts
|
|
@@ -297,10 +174,10 @@ function useGtmEvent() {
|
|
|
297
174
|
}
|
|
298
175
|
|
|
299
176
|
// hooks/useUtmParams.ts
|
|
300
|
-
var
|
|
177
|
+
var import_react2 = require("react");
|
|
301
178
|
function useUtmParams() {
|
|
302
|
-
const [utmParams, setUtmParams] = (0,
|
|
303
|
-
(0,
|
|
179
|
+
const [utmParams, setUtmParams] = (0, import_react2.useState)({});
|
|
180
|
+
(0, import_react2.useEffect)(() => {
|
|
304
181
|
if (typeof window === "undefined") return;
|
|
305
182
|
const urlParams = new URLSearchParams(window.location.search);
|
|
306
183
|
const source = urlParams.get("utm_source");
|
|
@@ -349,6 +226,99 @@ function useUtmParams() {
|
|
|
349
226
|
return utmParams;
|
|
350
227
|
}
|
|
351
228
|
|
|
229
|
+
// theme/context.tsx
|
|
230
|
+
var import_react3 = require("react");
|
|
231
|
+
|
|
232
|
+
// theme/defaults.ts
|
|
233
|
+
var DEFAULT_THEME = {
|
|
234
|
+
id: "default",
|
|
235
|
+
name: "Default Theme",
|
|
236
|
+
colors: {
|
|
237
|
+
primary: { color: "#3B82F6", opacity: 100 },
|
|
238
|
+
secondary: { color: "#8B5CF6", opacity: 100 },
|
|
239
|
+
accent: { color: "#10B981", opacity: 100 },
|
|
240
|
+
background: { color: "#FFFFFF", opacity: 100 },
|
|
241
|
+
foreground: { color: "#111827", opacity: 100 },
|
|
242
|
+
muted: { color: "#F3F4F6", opacity: 100 }
|
|
243
|
+
},
|
|
244
|
+
typography: {
|
|
245
|
+
fontFamily: {
|
|
246
|
+
heading: "system-ui, sans-serif",
|
|
247
|
+
body: "system-ui, sans-serif"
|
|
248
|
+
},
|
|
249
|
+
fontSize: {
|
|
250
|
+
base: "base",
|
|
251
|
+
heading: "4xl"
|
|
252
|
+
},
|
|
253
|
+
fontWeight: {
|
|
254
|
+
normal: 400,
|
|
255
|
+
heading: 700
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
spacing: {
|
|
259
|
+
xs: 8,
|
|
260
|
+
sm: 12,
|
|
261
|
+
md: 16,
|
|
262
|
+
lg: 24,
|
|
263
|
+
xl: 32
|
|
264
|
+
},
|
|
265
|
+
borders: {
|
|
266
|
+
radiusSmall: 4,
|
|
267
|
+
radiusMedium: 8,
|
|
268
|
+
radiusLarge: 16
|
|
269
|
+
},
|
|
270
|
+
shadows: {
|
|
271
|
+
small: "sm",
|
|
272
|
+
medium: "md",
|
|
273
|
+
large: "lg"
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
// theme/context.tsx
|
|
278
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
279
|
+
var ThemeContext = (0, import_react3.createContext)(null);
|
|
280
|
+
function useTheme() {
|
|
281
|
+
const context = (0, import_react3.useContext)(ThemeContext);
|
|
282
|
+
if (!context) {
|
|
283
|
+
return {
|
|
284
|
+
theme: DEFAULT_THEME,
|
|
285
|
+
resolveColor: (key) => DEFAULT_THEME.colors[key],
|
|
286
|
+
resolveSpacing: (key) => DEFAULT_THEME.spacing[key],
|
|
287
|
+
resolveBorderRadius: (key) => DEFAULT_THEME.borders[key],
|
|
288
|
+
resolveShadow: (key) => DEFAULT_THEME.shadows[key]
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
return context;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// utils/index.ts
|
|
295
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
296
|
+
var import_clsx = require("clsx");
|
|
297
|
+
function hexToRgba(hex, opacity) {
|
|
298
|
+
if (hex.startsWith("rgba(")) {
|
|
299
|
+
const rgbaMatch = hex.match(
|
|
300
|
+
/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/
|
|
301
|
+
);
|
|
302
|
+
if (rgbaMatch) {
|
|
303
|
+
return `rgba(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]}, ${opacity / 100})`;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
if (hex.startsWith("rgb(")) {
|
|
307
|
+
const rgbMatch = hex.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
|
|
308
|
+
if (rgbMatch) {
|
|
309
|
+
return `rgba(${rgbMatch[1]}, ${rgbMatch[2]}, ${rgbMatch[3]}, ${opacity / 100})`;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
const sanitized = hex.replace("#", "");
|
|
313
|
+
const r = parseInt(sanitized.slice(0, 2), 16);
|
|
314
|
+
const g = parseInt(sanitized.slice(2, 4), 16);
|
|
315
|
+
const b = parseInt(sanitized.slice(4, 6), 16);
|
|
316
|
+
return `rgba(${r}, ${g}, ${b}, ${opacity / 100})`;
|
|
317
|
+
}
|
|
318
|
+
function cn(...inputs) {
|
|
319
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
320
|
+
}
|
|
321
|
+
|
|
352
322
|
// components/page/Button.tsx
|
|
353
323
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
354
324
|
var sizeStyles = {
|
|
@@ -364,10 +334,10 @@ var radiusMap = {
|
|
|
364
334
|
lg: "16px",
|
|
365
335
|
full: "9999px"
|
|
366
336
|
};
|
|
367
|
-
function
|
|
337
|
+
function isThemeableValue(value) {
|
|
368
338
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
369
339
|
}
|
|
370
|
-
function
|
|
340
|
+
function isEntryBoundValue(value) {
|
|
371
341
|
return typeof value === "object" && value !== null && "useEntry" in value;
|
|
372
342
|
}
|
|
373
343
|
function Button({
|
|
@@ -390,7 +360,7 @@ function Button({
|
|
|
390
360
|
const resolvedText = (() => {
|
|
391
361
|
if (!text) return "Button";
|
|
392
362
|
if (typeof text === "string") return text;
|
|
393
|
-
if (
|
|
363
|
+
if (isEntryBoundValue(text)) {
|
|
394
364
|
if (text.useEntry) {
|
|
395
365
|
return String(getEntryValue(text.entryName, text.fieldKey) ?? "Button");
|
|
396
366
|
}
|
|
@@ -411,7 +381,7 @@ function Button({
|
|
|
411
381
|
const resolvedColor = (() => {
|
|
412
382
|
if (!color) return resolveColor2("primary");
|
|
413
383
|
if (typeof color === "string") return { color, opacity: 100 };
|
|
414
|
-
if (
|
|
384
|
+
if (isThemeableValue(color)) {
|
|
415
385
|
return color.useTheme ? resolveColor2(color.themeKey) : color.value;
|
|
416
386
|
}
|
|
417
387
|
if ("color" in color) return color;
|
|
@@ -424,7 +394,7 @@ function Button({
|
|
|
424
394
|
}
|
|
425
395
|
if (typeof textColor === "string")
|
|
426
396
|
return { color: textColor, opacity: 100 };
|
|
427
|
-
if (
|
|
397
|
+
if (isThemeableValue(textColor)) {
|
|
428
398
|
return textColor.useTheme ? resolveColor2(textColor.themeKey) : textColor.value;
|
|
429
399
|
}
|
|
430
400
|
if ("color" in textColor) return textColor;
|
|
@@ -521,10 +491,10 @@ var shadowMap = {
|
|
|
521
491
|
lg: "0 10px 15px rgba(0,0,0,0.1)",
|
|
522
492
|
xl: "0 20px 25px rgba(0,0,0,0.15)"
|
|
523
493
|
};
|
|
524
|
-
function
|
|
494
|
+
function isThemeableValue2(value) {
|
|
525
495
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
526
496
|
}
|
|
527
|
-
function
|
|
497
|
+
function isEntryBoundValue2(value) {
|
|
528
498
|
return typeof value === "object" && value !== null && "useEntry" in value;
|
|
529
499
|
}
|
|
530
500
|
function Image({
|
|
@@ -545,7 +515,7 @@ function Image({
|
|
|
545
515
|
const resolvedSrc = (() => {
|
|
546
516
|
if (!src) return "";
|
|
547
517
|
if (typeof src === "string") return src;
|
|
548
|
-
if (
|
|
518
|
+
if (isEntryBoundValue2(src)) {
|
|
549
519
|
if (src.useEntry) {
|
|
550
520
|
return String(getEntryValue(src.entryName, src.fieldKey) ?? "");
|
|
551
521
|
}
|
|
@@ -556,7 +526,7 @@ function Image({
|
|
|
556
526
|
const resolvedCaption = (() => {
|
|
557
527
|
if (!caption) return "";
|
|
558
528
|
if (typeof caption === "string") return caption;
|
|
559
|
-
if (
|
|
529
|
+
if (isEntryBoundValue2(caption)) {
|
|
560
530
|
if (caption.useEntry) {
|
|
561
531
|
return String(getEntryValue(caption.entryName, caption.fieldKey) ?? "");
|
|
562
532
|
}
|
|
@@ -568,7 +538,7 @@ function Image({
|
|
|
568
538
|
if (!captionColor) return resolveColor2("muted");
|
|
569
539
|
if (typeof captionColor === "string")
|
|
570
540
|
return { color: captionColor, opacity: 100 };
|
|
571
|
-
if (
|
|
541
|
+
if (isThemeableValue2(captionColor)) {
|
|
572
542
|
return captionColor.useTheme ? resolveColor2(captionColor.themeKey) : captionColor.value;
|
|
573
543
|
}
|
|
574
544
|
if ("color" in captionColor) return captionColor;
|
|
@@ -633,7 +603,7 @@ var radiusMap3 = {
|
|
|
633
603
|
md: "8px",
|
|
634
604
|
lg: "16px"
|
|
635
605
|
};
|
|
636
|
-
function
|
|
606
|
+
function isThemeableValue3(value) {
|
|
637
607
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
638
608
|
}
|
|
639
609
|
function ImageCarousel({
|
|
@@ -654,7 +624,7 @@ function ImageCarousel({
|
|
|
654
624
|
if (!arrowColor) return { color: "#FFFFFF", opacity: 100 };
|
|
655
625
|
if (typeof arrowColor === "string")
|
|
656
626
|
return { color: arrowColor, opacity: 100 };
|
|
657
|
-
if (
|
|
627
|
+
if (isThemeableValue3(arrowColor)) {
|
|
658
628
|
return arrowColor.useTheme ? resolveColor2(arrowColor.themeKey) : arrowColor.value;
|
|
659
629
|
}
|
|
660
630
|
if ("color" in arrowColor) return arrowColor;
|
|
@@ -663,7 +633,7 @@ function ImageCarousel({
|
|
|
663
633
|
const resolvedDotColor = (() => {
|
|
664
634
|
if (!dotColor) return resolveColor2("primary");
|
|
665
635
|
if (typeof dotColor === "string") return { color: dotColor, opacity: 100 };
|
|
666
|
-
if (
|
|
636
|
+
if (isThemeableValue3(dotColor)) {
|
|
667
637
|
return dotColor.useTheme ? resolveColor2(dotColor.themeKey) : dotColor.value;
|
|
668
638
|
}
|
|
669
639
|
if ("color" in dotColor) return dotColor;
|
|
@@ -837,7 +807,7 @@ var maxWidthMap = {
|
|
|
837
807
|
xl: "1000px",
|
|
838
808
|
full: "100%"
|
|
839
809
|
};
|
|
840
|
-
function
|
|
810
|
+
function isEntryBoundValue3(value) {
|
|
841
811
|
return typeof value === "object" && value !== null && "useEntry" in value;
|
|
842
812
|
}
|
|
843
813
|
function parseVideoUrl(url) {
|
|
@@ -874,7 +844,7 @@ function VideoEmbed({
|
|
|
874
844
|
const resolvedUrl = (() => {
|
|
875
845
|
if (!url) return "";
|
|
876
846
|
if (typeof url === "string") return url;
|
|
877
|
-
if (
|
|
847
|
+
if (isEntryBoundValue3(url)) {
|
|
878
848
|
if (url.useEntry) {
|
|
879
849
|
return String(getEntryValue(url.entryName, url.fieldKey) ?? "");
|
|
880
850
|
}
|
|
@@ -942,7 +912,7 @@ function VideoEmbed({
|
|
|
942
912
|
|
|
943
913
|
// components/page/Icon.tsx
|
|
944
914
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
945
|
-
var
|
|
915
|
+
var sizeMap = {
|
|
946
916
|
sm: { size: "16px", strokeWidth: 2 },
|
|
947
917
|
md: { size: "24px", strokeWidth: 2 },
|
|
948
918
|
lg: { size: "32px", strokeWidth: 1.5 },
|
|
@@ -1139,7 +1109,7 @@ var icons = {
|
|
|
1139
1109
|
}
|
|
1140
1110
|
)
|
|
1141
1111
|
};
|
|
1142
|
-
function
|
|
1112
|
+
function isThemeableValue4(value) {
|
|
1143
1113
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1144
1114
|
}
|
|
1145
1115
|
function Icon({
|
|
@@ -1153,14 +1123,14 @@ function Icon({
|
|
|
1153
1123
|
const resolvedColor = (() => {
|
|
1154
1124
|
if (!color) return resolveColor2("primary");
|
|
1155
1125
|
if (typeof color === "string") return { color, opacity: 100 };
|
|
1156
|
-
if (
|
|
1126
|
+
if (isThemeableValue4(color)) {
|
|
1157
1127
|
return color.useTheme ? resolveColor2(color.themeKey) : color.value;
|
|
1158
1128
|
}
|
|
1159
1129
|
if ("color" in color) return color;
|
|
1160
1130
|
return resolveColor2("primary");
|
|
1161
1131
|
})();
|
|
1162
1132
|
const IconComponent = icons[name.toLowerCase()] || icons.check;
|
|
1163
|
-
const { size: iconSize, strokeWidth } =
|
|
1133
|
+
const { size: iconSize, strokeWidth } = sizeMap[size];
|
|
1164
1134
|
const colorValue = hexToRgba(resolvedColor.color, resolvedColor.opacity);
|
|
1165
1135
|
const wrapperStyle = {
|
|
1166
1136
|
display: "flex",
|
|
@@ -1215,13 +1185,13 @@ var getShadowCSS = (value) => {
|
|
|
1215
1185
|
|
|
1216
1186
|
// components/page/Section.tsx
|
|
1217
1187
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1218
|
-
function
|
|
1188
|
+
function isThemeableValue5(value) {
|
|
1219
1189
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1220
1190
|
}
|
|
1221
1191
|
function resolveBackgroundColor(bg, resolveColor2) {
|
|
1222
1192
|
if (!bg) return void 0;
|
|
1223
1193
|
if (typeof bg === "string") return bg;
|
|
1224
|
-
if (
|
|
1194
|
+
if (isThemeableValue5(bg)) {
|
|
1225
1195
|
if (bg.useTheme) {
|
|
1226
1196
|
const themeColor = resolveColor2(bg.themeKey);
|
|
1227
1197
|
return hexToRgba(themeColor.color, themeColor.opacity);
|
|
@@ -1299,7 +1269,7 @@ var paddingMap = {
|
|
|
1299
1269
|
lg: "32px",
|
|
1300
1270
|
xl: "48px"
|
|
1301
1271
|
};
|
|
1302
|
-
function
|
|
1272
|
+
function isThemeableValue6(value) {
|
|
1303
1273
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1304
1274
|
}
|
|
1305
1275
|
function Container({
|
|
@@ -1318,7 +1288,7 @@ function Container({
|
|
|
1318
1288
|
if (!backgroundColor) return null;
|
|
1319
1289
|
if (typeof backgroundColor === "string")
|
|
1320
1290
|
return { color: backgroundColor, opacity: 100 };
|
|
1321
|
-
if (
|
|
1291
|
+
if (isThemeableValue6(backgroundColor)) {
|
|
1322
1292
|
return backgroundColor.useTheme ? resolveColor2(backgroundColor.themeKey) : backgroundColor.value;
|
|
1323
1293
|
}
|
|
1324
1294
|
if ("color" in backgroundColor) return backgroundColor;
|
|
@@ -1402,7 +1372,7 @@ var paddingMap2 = {
|
|
|
1402
1372
|
lg: "32px",
|
|
1403
1373
|
xl: "48px"
|
|
1404
1374
|
};
|
|
1405
|
-
function
|
|
1375
|
+
function isThemeableValue7(value) {
|
|
1406
1376
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1407
1377
|
}
|
|
1408
1378
|
function Card({
|
|
@@ -1421,7 +1391,7 @@ function Card({
|
|
|
1421
1391
|
if (!backgroundColor) return resolveColor2("background");
|
|
1422
1392
|
if (typeof backgroundColor === "string")
|
|
1423
1393
|
return { color: backgroundColor, opacity: 100 };
|
|
1424
|
-
if (
|
|
1394
|
+
if (isThemeableValue7(backgroundColor)) {
|
|
1425
1395
|
return backgroundColor.useTheme ? resolveColor2(backgroundColor.themeKey) : backgroundColor.value;
|
|
1426
1396
|
}
|
|
1427
1397
|
if ("color" in backgroundColor) return backgroundColor;
|
|
@@ -1431,7 +1401,7 @@ function Card({
|
|
|
1431
1401
|
if (!borderColor) return resolveColor2("muted");
|
|
1432
1402
|
if (typeof borderColor === "string")
|
|
1433
1403
|
return { color: borderColor, opacity: 100 };
|
|
1434
|
-
if (
|
|
1404
|
+
if (isThemeableValue7(borderColor)) {
|
|
1435
1405
|
return borderColor.useTheme ? resolveColor2(borderColor.themeKey) : borderColor.value;
|
|
1436
1406
|
}
|
|
1437
1407
|
if ("color" in borderColor) return borderColor;
|
|
@@ -1466,7 +1436,7 @@ var spacingMap = {
|
|
|
1466
1436
|
lg: "32px",
|
|
1467
1437
|
xl: "48px"
|
|
1468
1438
|
};
|
|
1469
|
-
function
|
|
1439
|
+
function isThemeableValue8(value) {
|
|
1470
1440
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1471
1441
|
}
|
|
1472
1442
|
function Divider({
|
|
@@ -1482,7 +1452,7 @@ function Divider({
|
|
|
1482
1452
|
const resolvedColor = (() => {
|
|
1483
1453
|
if (!color) return resolveColor2("muted");
|
|
1484
1454
|
if (typeof color === "string") return { color, opacity: 100 };
|
|
1485
|
-
if (
|
|
1455
|
+
if (isThemeableValue8(color)) {
|
|
1486
1456
|
return color.useTheme ? resolveColor2(color.themeKey) : color.value;
|
|
1487
1457
|
}
|
|
1488
1458
|
if ("color" in color) return color;
|
|
@@ -1504,7 +1474,7 @@ function Divider({
|
|
|
1504
1474
|
|
|
1505
1475
|
// components/page/Spacer.tsx
|
|
1506
1476
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1507
|
-
var
|
|
1477
|
+
var sizeMap2 = {
|
|
1508
1478
|
xs: "8px",
|
|
1509
1479
|
sm: "16px",
|
|
1510
1480
|
md: "24px",
|
|
@@ -1515,7 +1485,7 @@ var sizeMap4 = {
|
|
|
1515
1485
|
};
|
|
1516
1486
|
function Spacer({ size = "md", id }) {
|
|
1517
1487
|
const style = {
|
|
1518
|
-
height:
|
|
1488
|
+
height: sizeMap2[size],
|
|
1519
1489
|
width: "100%"
|
|
1520
1490
|
};
|
|
1521
1491
|
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { id, style, "aria-hidden": "true" });
|
|
@@ -1528,23 +1498,23 @@ var alignmentMap = {
|
|
|
1528
1498
|
center: "text-center",
|
|
1529
1499
|
right: "text-right"
|
|
1530
1500
|
};
|
|
1531
|
-
var
|
|
1501
|
+
var sizeMap3 = {
|
|
1532
1502
|
small: "text-2xl",
|
|
1533
1503
|
"medium-small": "text-3xl",
|
|
1534
1504
|
medium: "text-4xl",
|
|
1535
1505
|
large: "text-5xl",
|
|
1536
1506
|
xlarge: "text-6xl"
|
|
1537
1507
|
};
|
|
1538
|
-
function
|
|
1508
|
+
function isThemeableValue9(value) {
|
|
1539
1509
|
return typeof value === "object" && value !== null && "useTheme" in value;
|
|
1540
1510
|
}
|
|
1541
|
-
function
|
|
1511
|
+
function isEntryBoundValue4(value) {
|
|
1542
1512
|
return typeof value === "object" && value !== null && "useEntry" in value;
|
|
1543
1513
|
}
|
|
1544
1514
|
function resolveColor(color, resolveThemeColor) {
|
|
1545
1515
|
if (!color) return "#000000";
|
|
1546
1516
|
if (typeof color === "string") return color;
|
|
1547
|
-
if (
|
|
1517
|
+
if (isThemeableValue9(color)) {
|
|
1548
1518
|
if (color.useTheme) {
|
|
1549
1519
|
const themeColor = resolveThemeColor(color.themeKey);
|
|
1550
1520
|
return hexToRgba(themeColor.color, themeColor.opacity);
|
|
@@ -1559,7 +1529,7 @@ function resolveColor(color, resolveThemeColor) {
|
|
|
1559
1529
|
function resolveColorHex(color, resolveThemeColor) {
|
|
1560
1530
|
if (!color) return "#000000";
|
|
1561
1531
|
if (typeof color === "string") return color;
|
|
1562
|
-
if (
|
|
1532
|
+
if (isThemeableValue9(color)) {
|
|
1563
1533
|
if (color.useTheme) {
|
|
1564
1534
|
return resolveThemeColor(color.themeKey).color;
|
|
1565
1535
|
}
|
|
@@ -1588,7 +1558,7 @@ function TextBlock({
|
|
|
1588
1558
|
const resolveText = (value) => {
|
|
1589
1559
|
if (!value) return void 0;
|
|
1590
1560
|
if (typeof value === "string") return value;
|
|
1591
|
-
if (
|
|
1561
|
+
if (isEntryBoundValue4(value)) {
|
|
1592
1562
|
if (value.useEntry) {
|
|
1593
1563
|
const entryVal = getEntryValue(value.entryName, value.fieldKey);
|
|
1594
1564
|
return entryVal != null ? String(entryVal) : void 0;
|
|
@@ -1617,7 +1587,7 @@ function TextBlock({
|
|
|
1617
1587
|
resolvedTitle && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1618
1588
|
"h2",
|
|
1619
1589
|
{
|
|
1620
|
-
className: cn("font-bold",
|
|
1590
|
+
className: cn("font-bold", sizeMap3[textSize]),
|
|
1621
1591
|
style: gradientStyle,
|
|
1622
1592
|
children: resolvedTitle
|
|
1623
1593
|
}
|
|
@@ -1671,7 +1641,7 @@ function CustomImage({
|
|
|
1671
1641
|
// components/page/FeaturesList.tsx
|
|
1672
1642
|
var import_lucide_react = require("lucide-react");
|
|
1673
1643
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1674
|
-
var
|
|
1644
|
+
var sizeMap4 = {
|
|
1675
1645
|
small: { icon: 24, title: "text-base", desc: "text-sm" },
|
|
1676
1646
|
medium: { icon: 32, title: "text-lg", desc: "text-base" },
|
|
1677
1647
|
large: { icon: 48, title: "text-xl", desc: "text-lg" }
|
|
@@ -1683,7 +1653,7 @@ function FeaturesList({
|
|
|
1683
1653
|
iconColor = "#000000",
|
|
1684
1654
|
anchorLink
|
|
1685
1655
|
}) {
|
|
1686
|
-
const sizeConfig =
|
|
1656
|
+
const sizeConfig = sizeMap4[size];
|
|
1687
1657
|
const getIcon = (iconName) => {
|
|
1688
1658
|
const formatted = iconName.charAt(0).toUpperCase() + iconName.slice(1);
|
|
1689
1659
|
return import_lucide_react.icons[formatted] || null;
|
|
@@ -1740,7 +1710,7 @@ function FeaturesList({
|
|
|
1740
1710
|
// components/page/FeatureGrid.tsx
|
|
1741
1711
|
var import_lucide_react2 = require("lucide-react");
|
|
1742
1712
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1743
|
-
var
|
|
1713
|
+
var sizeMap5 = {
|
|
1744
1714
|
small: { icon: 24, title: "text-base", desc: "text-sm" },
|
|
1745
1715
|
medium: { icon: 32, title: "text-lg", desc: "text-base" },
|
|
1746
1716
|
large: { icon: 48, title: "text-xl", desc: "text-lg" }
|
|
@@ -1756,7 +1726,7 @@ function FeatureGrid({
|
|
|
1756
1726
|
textColor = "#000000",
|
|
1757
1727
|
anchorLink
|
|
1758
1728
|
}) {
|
|
1759
|
-
const sizeConfig =
|
|
1729
|
+
const sizeConfig = sizeMap5[size];
|
|
1760
1730
|
const getIcon = (iconName) => {
|
|
1761
1731
|
const formatted = iconName.charAt(0).toUpperCase() + iconName.slice(1);
|
|
1762
1732
|
return import_lucide_react2.icons[formatted] || null;
|
|
@@ -2023,7 +1993,7 @@ var widthMap3 = {
|
|
|
2023
1993
|
medium: "max-w-lg",
|
|
2024
1994
|
large: "max-w-2xl"
|
|
2025
1995
|
};
|
|
2026
|
-
var
|
|
1996
|
+
var sizeMap6 = {
|
|
2027
1997
|
small: "px-3 py-1.5 text-sm",
|
|
2028
1998
|
medium: "px-4 py-2 text-base",
|
|
2029
1999
|
large: "px-6 py-3 text-lg"
|
|
@@ -2068,7 +2038,7 @@ function Popup({
|
|
|
2068
2038
|
onClick: handleOpen,
|
|
2069
2039
|
className: cn(
|
|
2070
2040
|
"flex items-center gap-2 rounded-full font-medium",
|
|
2071
|
-
|
|
2041
|
+
sizeMap6[size]
|
|
2072
2042
|
),
|
|
2073
2043
|
style: { backgroundColor: buttonColor, color: textColor },
|
|
2074
2044
|
children: [
|