@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.
@@ -24,119 +24,8 @@ __export(server_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(server_exports);
26
26
 
27
- // entries/context.tsx
28
- var import_react = require("react");
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 weightMap = {
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 letterSpacingMap = {
45
+ var headingLetterSpacingMap = {
157
46
  tight: "-0.025em",
158
47
  normal: "0",
159
48
  wide: "0.05em"
160
49
  };
161
- var lineHeightMap = {
50
+ var headingLineHeightMap = {
162
51
  tight: "1.1",
163
52
  normal: "1.4",
164
53
  relaxed: "1.6"
165
54
  };
166
- function isThemeableValue(value) {
167
- return typeof value === "object" && value !== null && "useTheme" in value;
168
- }
169
- function isEntryBoundValue(value) {
170
- return typeof value === "object" && value !== null && "useEntry" in value;
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 { resolveColor: resolveColor2 } = useTheme();
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
- fontSize: sizeMap[size],
208
- fontWeight: weightMap[weight],
209
- color: hexToRgba(resolvedColor.color, resolvedColor.opacity),
210
- textAlign: align,
211
- letterSpacing: letterSpacingMap[letterSpacing],
212
- lineHeight: lineHeightMap[lineHeight],
213
- margin: 0
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, import_jsx_runtime3.jsx)(Tag, { id, style, children: resolvedText });
91
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tag, { id, style, children: resolvedText });
217
92
  }
218
93
 
219
- // components/page/Paragraph.tsx
220
- var import_jsx_runtime4 = require("react/jsx-runtime");
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 weightMap2 = {
101
+ var paragraphWeightMap = {
228
102
  normal: 400,
229
103
  medium: 500,
230
104
  semibold: 600
231
105
  };
232
- var lineHeightMap2 = {
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 isThemeableValue2(value) {
239
- return typeof value === "object" && value !== null && "useTheme" in value;
240
- }
241
- function isEntryBoundValue2(value) {
242
- return typeof value === "object" && value !== null && "useEntry" in value;
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 { resolveColor: resolveColor2 } = useTheme();
255
- const { getEntryValue } = useEntries();
256
- const resolvedText = (() => {
257
- if (!text) return "";
258
- if (typeof text === "string") return text;
259
- if (isEntryBoundValue2(text)) {
260
- if (text.useEntry) {
261
- return String(getEntryValue(text.entryName, text.fieldKey) ?? "");
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, import_jsx_runtime4.jsx)("p", { id, style, children: resolvedText });
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 import_react3 = require("react");
177
+ var import_react2 = require("react");
301
178
  function useUtmParams() {
302
- const [utmParams, setUtmParams] = (0, import_react3.useState)({});
303
- (0, import_react3.useEffect)(() => {
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 isThemeableValue3(value) {
337
+ function isThemeableValue(value) {
368
338
  return typeof value === "object" && value !== null && "useTheme" in value;
369
339
  }
370
- function isEntryBoundValue3(value) {
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 (isEntryBoundValue3(text)) {
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 (isThemeableValue3(color)) {
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 (isThemeableValue3(textColor)) {
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 isThemeableValue4(value) {
494
+ function isThemeableValue2(value) {
525
495
  return typeof value === "object" && value !== null && "useTheme" in value;
526
496
  }
527
- function isEntryBoundValue4(value) {
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 (isEntryBoundValue4(src)) {
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 (isEntryBoundValue4(caption)) {
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 (isThemeableValue4(captionColor)) {
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 isThemeableValue5(value) {
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 (isThemeableValue5(arrowColor)) {
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 (isThemeableValue5(dotColor)) {
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 isEntryBoundValue5(value) {
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 (isEntryBoundValue5(url)) {
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 sizeMap3 = {
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 isThemeableValue6(value) {
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 (isThemeableValue6(color)) {
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 } = sizeMap3[size];
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 isThemeableValue7(value) {
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 (isThemeableValue7(bg)) {
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 isThemeableValue8(value) {
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 (isThemeableValue8(backgroundColor)) {
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 isThemeableValue9(value) {
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 (isThemeableValue9(backgroundColor)) {
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 (isThemeableValue9(borderColor)) {
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 isThemeableValue10(value) {
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 (isThemeableValue10(color)) {
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 sizeMap4 = {
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: sizeMap4[size],
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 sizeMap5 = {
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 isThemeableValue11(value) {
1508
+ function isThemeableValue9(value) {
1539
1509
  return typeof value === "object" && value !== null && "useTheme" in value;
1540
1510
  }
1541
- function isEntryBoundValue6(value) {
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 (isThemeableValue11(color)) {
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 (isThemeableValue11(color)) {
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 (isEntryBoundValue6(value)) {
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", sizeMap5[textSize]),
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 sizeMap6 = {
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 = sizeMap6[size];
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 sizeMap7 = {
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 = sizeMap7[size];
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 sizeMap8 = {
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
- sizeMap8[size]
2041
+ sizeMap6[size]
2072
2042
  ),
2073
2043
  style: { backgroundColor: buttonColor, color: textColor },
2074
2044
  children: [