@mission-studio/puck 1.0.5 → 1.0.15

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/index.js CHANGED
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
 
30
20
  // index.ts
@@ -332,8 +322,15 @@ function Paragraph({
332
322
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { id, style, children: resolvedText });
333
323
  }
334
324
 
335
- // components/page/Button.tsx
336
- var import_google = require("@next/third-parties/google");
325
+ // hooks/useGtmEvent.ts
326
+ function useGtmEvent() {
327
+ return (eventName, data) => {
328
+ if (typeof window === "undefined") return;
329
+ if (typeof window.gtag === "function") {
330
+ window.gtag("event", eventName, data || {});
331
+ }
332
+ };
333
+ }
337
334
 
338
335
  // hooks/useUtmParams.ts
339
336
  var import_react3 = require("react");
@@ -425,6 +422,7 @@ function Button({
425
422
  const { resolveColor: resolveColor2 } = useTheme();
426
423
  const { getEntryValue } = useEntries();
427
424
  const utm = useUtmParams();
425
+ const sendEvent = useGtmEvent();
428
426
  const resolvedText = (() => {
429
427
  if (!text) return "Button";
430
428
  if (typeof text === "string") return text;
@@ -438,15 +436,12 @@ function Button({
438
436
  })();
439
437
  const handleClick = () => {
440
438
  const sessionId = typeof window !== "undefined" ? sessionStorage.getItem("session_id") : null;
441
- (0, import_google.sendGTMEvent)({
442
- event: "button_click",
443
- value: {
444
- text: resolvedText,
445
- href: href || void 0,
446
- variant,
447
- session_id: sessionId,
448
- ...utm
449
- }
439
+ sendEvent("button_click", {
440
+ text: resolvedText,
441
+ href: href || void 0,
442
+ variant,
443
+ session_id: sessionId,
444
+ ...utm
450
445
  });
451
446
  };
452
447
  const resolvedColor = (() => {
@@ -661,7 +656,6 @@ function Image({
661
656
 
662
657
  // components/page/ImageCarousel.tsx
663
658
  var import_react4 = require("react");
664
- var import_google2 = require("@next/third-parties/google");
665
659
  var import_jsx_runtime7 = require("react/jsx-runtime");
666
660
  var aspectRatioMap2 = {
667
661
  "16:9": "16 / 9",
@@ -691,6 +685,7 @@ function ImageCarousel({
691
685
  const [currentIndex, setCurrentIndex] = (0, import_react4.useState)(0);
692
686
  const { resolveColor: resolveColor2 } = useTheme();
693
687
  const utm = useUtmParams();
688
+ const sendEvent = useGtmEvent();
694
689
  const resolvedArrowColor = (() => {
695
690
  if (!arrowColor) return { color: "#FFFFFF", opacity: 100 };
696
691
  if (typeof arrowColor === "string")
@@ -713,39 +708,30 @@ function ImageCarousel({
713
708
  const goToPrevious = () => {
714
709
  const newIndex = currentIndex === 0 ? images.length - 1 : currentIndex - 1;
715
710
  setCurrentIndex(newIndex);
716
- (0, import_google2.sendGTMEvent)({
717
- event: "carousel_navigate",
718
- value: {
719
- direction: "previous",
720
- slideIndex: newIndex,
721
- totalSlides: images.length,
722
- ...utm
723
- }
711
+ sendEvent("carousel_navigate", {
712
+ direction: "previous",
713
+ slideIndex: newIndex,
714
+ totalSlides: images.length,
715
+ ...utm
724
716
  });
725
717
  };
726
718
  const goToNext = () => {
727
719
  const newIndex = currentIndex === images.length - 1 ? 0 : currentIndex + 1;
728
720
  setCurrentIndex(newIndex);
729
- (0, import_google2.sendGTMEvent)({
730
- event: "carousel_navigate",
731
- value: {
732
- direction: "next",
733
- slideIndex: newIndex,
734
- totalSlides: images.length,
735
- ...utm
736
- }
721
+ sendEvent("carousel_navigate", {
722
+ direction: "next",
723
+ slideIndex: newIndex,
724
+ totalSlides: images.length,
725
+ ...utm
737
726
  });
738
727
  };
739
728
  const goToSlide = (index) => {
740
729
  setCurrentIndex(index);
741
- (0, import_google2.sendGTMEvent)({
742
- event: "carousel_navigate",
743
- value: {
744
- direction: "direct",
745
- slideIndex: index,
746
- totalSlides: images.length,
747
- ...utm
748
- }
730
+ sendEvent("carousel_navigate", {
731
+ direction: "direct",
732
+ slideIndex: index,
733
+ totalSlides: images.length,
734
+ ...utm
749
735
  });
750
736
  };
751
737
  if (images.length === 0) {
@@ -1875,7 +1861,6 @@ function FeatureGrid({
1875
1861
 
1876
1862
  // components/page/Footer.tsx
1877
1863
  var import_lucide_react3 = require("lucide-react");
1878
- var import_google3 = require("@next/third-parties/google");
1879
1864
  var import_jsx_runtime20 = require("react/jsx-runtime");
1880
1865
  function Footer({
1881
1866
  logo,
@@ -1889,6 +1874,7 @@ function Footer({
1889
1874
  }) {
1890
1875
  const DropZone = puck?.renderDropZone;
1891
1876
  const utm = useUtmParams();
1877
+ const sendEvent = useGtmEvent();
1892
1878
  const getSocialPlatform = (url) => {
1893
1879
  if (url.includes("facebook")) return "facebook";
1894
1880
  if (url.includes("instagram")) return "instagram";
@@ -1897,13 +1883,10 @@ function Footer({
1897
1883
  };
1898
1884
  const handleSocialClick = (url) => {
1899
1885
  const platform = getSocialPlatform(url);
1900
- (0, import_google3.sendGTMEvent)({
1901
- event: "social_click",
1902
- value: {
1903
- platform,
1904
- url,
1905
- ...utm
1906
- }
1886
+ sendEvent("social_click", {
1887
+ platform,
1888
+ url,
1889
+ ...utm
1907
1890
  });
1908
1891
  };
1909
1892
  const socialLinks = [
@@ -1941,9 +1924,7 @@ function Footer({
1941
1924
 
1942
1925
  // components/page/Topbar.tsx
1943
1926
  var import_react5 = require("react");
1944
- var import_link = __toESM(require("next/link"));
1945
1927
  var import_lucide_react4 = require("lucide-react");
1946
- var import_google4 = require("@next/third-parties/google");
1947
1928
  var import_jsx_runtime21 = require("react/jsx-runtime");
1948
1929
  function Topbar({
1949
1930
  logo,
@@ -1957,26 +1938,21 @@ function Topbar({
1957
1938
  const DropZone = puck?.renderDropZone;
1958
1939
  const [mobileMenuOpen, setMobileMenuOpen] = (0, import_react5.useState)(false);
1959
1940
  const utm = useUtmParams();
1941
+ const sendEvent = useGtmEvent();
1960
1942
  const handleNavClick = (item) => {
1961
- (0, import_google4.sendGTMEvent)({
1962
- event: "nav_click",
1963
- value: {
1964
- name: item.name,
1965
- url: item.url,
1966
- linkType: item.linkType || "internal",
1967
- ...utm
1968
- }
1943
+ sendEvent("nav_click", {
1944
+ name: item.name,
1945
+ url: item.url,
1946
+ linkType: item.linkType || "internal",
1947
+ ...utm
1969
1948
  });
1970
1949
  };
1971
1950
  const handleMobileMenuToggle = () => {
1972
1951
  const newState = !mobileMenuOpen;
1973
1952
  setMobileMenuOpen(newState);
1974
- (0, import_google4.sendGTMEvent)({
1975
- event: "mobile_menu_toggle",
1976
- value: {
1977
- open: newState,
1978
- ...utm
1979
- }
1953
+ sendEvent("mobile_menu_toggle", {
1954
+ open: newState,
1955
+ ...utm
1980
1956
  });
1981
1957
  };
1982
1958
  const renderLink = (item, index) => {
@@ -2008,7 +1984,7 @@ function Topbar({
2008
1984
  );
2009
1985
  }
2010
1986
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2011
- import_link.default,
1987
+ "a",
2012
1988
  {
2013
1989
  href: item.url,
2014
1990
  className,
@@ -2031,18 +2007,15 @@ function Topbar({
2031
2007
  style: { maxWidth },
2032
2008
  children: [
2033
2009
  /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2034
- import_link.default,
2010
+ "a",
2035
2011
  {
2036
2012
  href: logoUrl,
2037
2013
  className: "flex-shrink-0",
2038
- onClick: () => (0, import_google4.sendGTMEvent)({
2039
- event: "nav_click",
2040
- value: {
2041
- name: "logo",
2042
- url: logoUrl,
2043
- linkType: "internal",
2044
- ...utm
2045
- }
2014
+ onClick: () => sendEvent("nav_click", {
2015
+ name: "logo",
2016
+ url: logoUrl,
2017
+ linkType: "internal",
2018
+ ...utm
2046
2019
  }),
2047
2020
  children: logo ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("img", { src: logo, alt: "Logo", className: "h-8" }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "text-xl font-bold", children: "Logo" })
2048
2021
  }
@@ -2074,7 +2047,6 @@ function Topbar({
2074
2047
  // components/page/Popup.tsx
2075
2048
  var import_react6 = require("react");
2076
2049
  var import_lucide_react5 = require("lucide-react");
2077
- var import_google5 = require("@next/third-parties/google");
2078
2050
  var import_jsx_runtime22 = require("react/jsx-runtime");
2079
2051
  function Icon2({ name, ...props }) {
2080
2052
  const formatted = name.charAt(0).toUpperCase() + name.slice(1);
@@ -2105,23 +2077,18 @@ function Popup({
2105
2077
  }) {
2106
2078
  const [isOpen, setIsOpen] = (0, import_react6.useState)(false);
2107
2079
  const utm = useUtmParams();
2080
+ const sendEvent = useGtmEvent();
2108
2081
  const handleOpen = () => {
2109
2082
  setIsOpen(true);
2110
- (0, import_google5.sendGTMEvent)({
2111
- event: "popup_open",
2112
- value: {
2113
- ctaText,
2114
- type: textLink ? "link" : "button",
2115
- ...utm
2116
- }
2083
+ sendEvent("popup_open", {
2084
+ ctaText,
2085
+ type: textLink ? "link" : "button",
2086
+ ...utm
2117
2087
  });
2118
2088
  };
2119
2089
  const handleClose = () => {
2120
2090
  setIsOpen(false);
2121
- (0, import_google5.sendGTMEvent)({
2122
- event: "popup_close",
2123
- value: { ctaText, ...utm }
2124
- });
2091
+ sendEvent("popup_close", { ctaText, ...utm });
2125
2092
  };
2126
2093
  const trigger = textLink ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2127
2094
  "button",
package/dist/index.mjs CHANGED
@@ -1,3 +1,18 @@
1
+ import {
2
+ allColorPresets,
3
+ neutralColors
4
+ } from "./chunk-UJTTHDZA.mjs";
5
+ import {
6
+ borderRadiusScale,
7
+ fontFamilies,
8
+ fontSizes,
9
+ fontWeights,
10
+ getBorderRadiusCSS,
11
+ getClosestBorderRadiusValue,
12
+ getClosestSpacingValue,
13
+ getFontSizeCSS,
14
+ spacingScale
15
+ } from "./chunk-A3QDUUOF.mjs";
1
16
  import {
2
17
  Button,
3
18
  Card,
@@ -20,27 +35,14 @@ import {
20
35
  Topbar,
21
36
  VideoEmbed,
22
37
  availableIcons
23
- } from "./chunk-R7TH6TWG.mjs";
24
- import {
25
- allColorPresets,
26
- neutralColors
27
- } from "./chunk-UJTTHDZA.mjs";
38
+ } from "./chunk-HHHD5TX2.mjs";
28
39
  import {
29
40
  DEFAULT_THEME,
30
41
  ThemeProvider,
31
- borderRadiusScale,
32
- fontFamilies,
33
- fontSizes,
34
- fontWeights,
35
- getBorderRadiusCSS,
36
- getClosestBorderRadiusValue,
37
- getClosestSpacingValue,
38
- getFontSizeCSS,
39
42
  getShadowCSS,
40
43
  shadowPresets,
41
- spacingScale,
42
44
  useTheme
43
- } from "./chunk-TTKY3YGP.mjs";
45
+ } from "./chunk-XRKFMCSS.mjs";
44
46
  import "./chunk-QSWQDR6M.mjs";
45
47
  export {
46
48
  Button,
@@ -0,0 +1,287 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { n as EntryBoundValue, k as ThemeableColorValue, C as ColorValue, R as ResponsiveVisibility } from './ResponsiveToggleField-BGofgB3u.mjs';
3
+ export { D as DEFAULT_THEME, P as PageTheme, T as ThemeBorderKey, a as ThemeBorders, b as ThemeColorKey, c as ThemeColors, d as ThemeProvider, e as ThemeShadowKey, f as ThemeShadows, g as ThemeSpacing, h as ThemeSpacingKey, i as ThemeTypography, j as ThemeableBorderRadiusValue, l as ThemeableShadowValue, m as ThemeableSpacingValue, u as useTheme } from './ResponsiveToggleField-BGofgB3u.mjs';
4
+ import { ReactNode } from 'react';
5
+ import { PuckContext } from '@measured/puck';
6
+
7
+ type HeadingProps = {
8
+ text?: EntryBoundValue<string> | string;
9
+ level?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
10
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl";
11
+ weight?: "normal" | "medium" | "semibold" | "bold" | "extrabold";
12
+ color?: ThemeableColorValue | ColorValue | string;
13
+ align?: "left" | "center" | "right";
14
+ letterSpacing?: "tight" | "normal" | "wide";
15
+ lineHeight?: "tight" | "normal" | "relaxed";
16
+ id?: string;
17
+ puck?: unknown;
18
+ editMode?: boolean;
19
+ };
20
+ declare function Heading({ text, level, size, weight, color, align, letterSpacing, lineHeight, id, }: HeadingProps): react_jsx_runtime.JSX.Element | null;
21
+
22
+ type ParagraphProps = {
23
+ text?: EntryBoundValue<string> | string;
24
+ size?: "sm" | "base" | "lg" | "xl";
25
+ weight?: "normal" | "medium" | "semibold";
26
+ color?: ThemeableColorValue | ColorValue | string;
27
+ align?: "left" | "center" | "right" | "justify";
28
+ lineHeight?: "tight" | "normal" | "relaxed" | "loose";
29
+ maxWidth?: string;
30
+ id?: string;
31
+ puck?: unknown;
32
+ editMode?: boolean;
33
+ };
34
+ declare function Paragraph({ text, size, weight, color, align, lineHeight, maxWidth, id, }: ParagraphProps): react_jsx_runtime.JSX.Element | null;
35
+
36
+ type ButtonProps = {
37
+ text?: EntryBoundValue<string> | string;
38
+ href?: string;
39
+ target?: "_self" | "_blank";
40
+ variant?: "solid" | "outline" | "ghost" | "link";
41
+ size?: "sm" | "md" | "lg" | "xl";
42
+ color?: ThemeableColorValue | ColorValue | string;
43
+ textColor?: ThemeableColorValue | ColorValue | string;
44
+ borderRadius?: "none" | "sm" | "md" | "lg" | "full";
45
+ fullWidth?: boolean;
46
+ align?: "left" | "center" | "right";
47
+ id?: string;
48
+ puck?: unknown;
49
+ editMode?: boolean;
50
+ };
51
+ declare function Button({ text, href, target, variant, size, color, textColor, borderRadius, fullWidth, align, id, }: ButtonProps): react_jsx_runtime.JSX.Element;
52
+
53
+ type ImageProps = {
54
+ src?: EntryBoundValue<string> | string;
55
+ alt?: string;
56
+ width?: "auto" | "full" | "sm" | "md" | "lg" | "xl";
57
+ aspectRatio?: "auto" | "1:1" | "4:3" | "16:9" | "21:9";
58
+ objectFit?: "contain" | "cover" | "fill" | "none";
59
+ borderRadius?: "none" | "sm" | "md" | "lg" | "xl" | "full";
60
+ shadow?: "none" | "sm" | "md" | "lg" | "xl";
61
+ align?: "left" | "center" | "right";
62
+ caption?: EntryBoundValue<string> | string;
63
+ captionColor?: ThemeableColorValue | ColorValue | string;
64
+ id?: string;
65
+ puck?: unknown;
66
+ editMode?: boolean;
67
+ };
68
+ declare function Image({ src, alt, width, aspectRatio, objectFit, borderRadius, shadow, align, caption, captionColor, id, }: ImageProps): react_jsx_runtime.JSX.Element;
69
+
70
+ type CarouselImage = {
71
+ src: string;
72
+ alt?: string;
73
+ };
74
+ type ImageCarouselProps = {
75
+ images?: CarouselImage[];
76
+ aspectRatio?: "16:9" | "4:3" | "1:1" | "21:9";
77
+ borderRadius?: "none" | "sm" | "md" | "lg";
78
+ showDots?: boolean;
79
+ showArrows?: boolean;
80
+ arrowColor?: ThemeableColorValue | ColorValue | string;
81
+ dotColor?: ThemeableColorValue | ColorValue | string;
82
+ autoPlay?: boolean;
83
+ autoPlayInterval?: number;
84
+ id?: string;
85
+ puck?: unknown;
86
+ editMode?: boolean;
87
+ };
88
+ declare function ImageCarousel({ images, aspectRatio, borderRadius, showDots, showArrows, arrowColor, dotColor, id, }: ImageCarouselProps): react_jsx_runtime.JSX.Element;
89
+
90
+ type VideoEmbedProps = {
91
+ url?: EntryBoundValue<string> | string;
92
+ aspectRatio?: "16:9" | "4:3" | "1:1" | "21:9";
93
+ borderRadius?: "none" | "sm" | "md" | "lg";
94
+ autoplay?: boolean;
95
+ muted?: boolean;
96
+ loop?: boolean;
97
+ align?: "left" | "center" | "right";
98
+ maxWidth?: "sm" | "md" | "lg" | "xl" | "full";
99
+ id?: string;
100
+ puck?: unknown;
101
+ editMode?: boolean;
102
+ };
103
+ declare function VideoEmbed({ url, aspectRatio, borderRadius, autoplay, muted, loop, align, maxWidth, id, }: VideoEmbedProps): react_jsx_runtime.JSX.Element;
104
+
105
+ type IconProps = {
106
+ name?: string;
107
+ size?: "sm" | "md" | "lg" | "xl" | "2xl";
108
+ color?: ThemeableColorValue | ColorValue | string;
109
+ align?: "left" | "center" | "right";
110
+ id?: string;
111
+ puck?: unknown;
112
+ editMode?: boolean;
113
+ };
114
+ declare function Icon({ name, size, color, align, id, }: IconProps): react_jsx_runtime.JSX.Element;
115
+ declare const availableIcons: string[];
116
+
117
+ type PuckProps = {
118
+ puck?: PuckContext;
119
+ editMode?: boolean;
120
+ id?: string;
121
+ };
122
+
123
+ type SectionProps = {
124
+ children?: ReactNode;
125
+ verticalPadding?: number;
126
+ horizontalPadding?: number;
127
+ gap?: number;
128
+ backgroundColor?: ThemeableColorValue | ColorValue | string;
129
+ backgroundImage?: string;
130
+ shadow?: string;
131
+ borderRadius?: number;
132
+ contentMaxWidth?: string;
133
+ anchorLink?: string;
134
+ visibility?: ResponsiveVisibility;
135
+ } & PuckProps;
136
+ declare function Section({ children: _children, verticalPadding, horizontalPadding, gap, backgroundColor, backgroundImage, shadow, borderRadius, contentMaxWidth, anchorLink, visibility, puck, }: SectionProps): react_jsx_runtime.JSX.Element;
137
+
138
+ type ContainerProps = {
139
+ maxWidth?: "sm" | "md" | "lg" | "xl" | "2xl" | "full";
140
+ padding?: "none" | "sm" | "md" | "lg" | "xl";
141
+ paddingX?: "none" | "sm" | "md" | "lg" | "xl";
142
+ paddingY?: "none" | "sm" | "md" | "lg" | "xl";
143
+ backgroundColor?: ThemeableColorValue | ColorValue | string;
144
+ centered?: boolean;
145
+ } & PuckProps;
146
+ declare function Container({ maxWidth, padding, paddingX, paddingY, backgroundColor, centered, id, puck, }: ContainerProps): react_jsx_runtime.JSX.Element;
147
+
148
+ type ColumnsProps = {
149
+ columns?: 2 | 3 | 4;
150
+ gap?: "none" | "sm" | "md" | "lg" | "xl";
151
+ verticalAlign?: "top" | "center" | "bottom" | "stretch";
152
+ stackOnMobile?: boolean;
153
+ } & PuckProps;
154
+ declare function Columns({ columns, gap, verticalAlign, stackOnMobile, id, puck, }: ColumnsProps): react_jsx_runtime.JSX.Element;
155
+
156
+ type CardProps = {
157
+ backgroundColor?: ThemeableColorValue | ColorValue | string;
158
+ borderColor?: ThemeableColorValue | ColorValue | string;
159
+ borderWidth?: "none" | "thin" | "medium" | "thick";
160
+ borderRadius?: "none" | "sm" | "md" | "lg" | "xl";
161
+ shadow?: "none" | "sm" | "md" | "lg" | "xl";
162
+ padding?: "none" | "sm" | "md" | "lg" | "xl";
163
+ } & PuckProps;
164
+ declare function Card({ backgroundColor, borderColor, borderWidth, borderRadius, shadow, padding, id, puck, }: CardProps): react_jsx_runtime.JSX.Element;
165
+
166
+ type DividerProps = {
167
+ style?: "solid" | "dashed" | "dotted";
168
+ thickness?: "thin" | "medium" | "thick";
169
+ color?: ThemeableColorValue | ColorValue | string;
170
+ width?: "full" | "3/4" | "1/2" | "1/4";
171
+ align?: "left" | "center" | "right";
172
+ spacing?: "sm" | "md" | "lg" | "xl";
173
+ id?: string;
174
+ puck?: unknown;
175
+ editMode?: boolean;
176
+ };
177
+ declare function Divider({ style: lineStyle, thickness, color, width, align, spacing, id, }: DividerProps): react_jsx_runtime.JSX.Element;
178
+
179
+ type SpacerProps = {
180
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl";
181
+ id?: string;
182
+ puck?: unknown;
183
+ editMode?: boolean;
184
+ };
185
+ declare function Spacer({ size, id }: SpacerProps): react_jsx_runtime.JSX.Element;
186
+
187
+ type TextBlockProps = {
188
+ title?: EntryBoundValue<string> | string;
189
+ subtitle?: EntryBoundValue<string> | string;
190
+ body?: EntryBoundValue<string> | string;
191
+ alignment?: "left" | "center" | "right";
192
+ textSize?: "small" | "medium-small" | "medium" | "large" | "xlarge";
193
+ textColor?: ThemeableColorValue | ColorValue | string;
194
+ subtitleBodyColor?: ThemeableColorValue | ColorValue | string;
195
+ useGradientText?: boolean;
196
+ gradientColor1?: ThemeableColorValue | ColorValue | string;
197
+ gradientColor2?: ThemeableColorValue | ColorValue | string;
198
+ anchorLink?: string;
199
+ puck?: unknown;
200
+ editMode?: boolean;
201
+ id?: string;
202
+ };
203
+ declare function TextBlock({ title, subtitle, body, alignment, textSize, textColor, subtitleBodyColor, useGradientText, gradientColor1, gradientColor2, anchorLink, }: TextBlockProps): react_jsx_runtime.JSX.Element;
204
+
205
+ type CustomImageProps = {
206
+ image?: string;
207
+ alt?: string;
208
+ maxWidth?: number;
209
+ alignment?: "left" | "center" | "right";
210
+ fitContent?: boolean;
211
+ } & PuckProps;
212
+ declare function CustomImage({ image, alt, maxWidth, alignment, fitContent, }: CustomImageProps): react_jsx_runtime.JSX.Element;
213
+
214
+ type Feature$1 = {
215
+ icon?: string;
216
+ image?: string;
217
+ title?: string;
218
+ description?: string;
219
+ };
220
+ type FeaturesListProps = {
221
+ features?: Feature$1[];
222
+ align?: "left" | "center" | "right";
223
+ size?: "small" | "medium" | "large";
224
+ iconColor?: string;
225
+ anchorLink?: string;
226
+ } & Record<string, unknown>;
227
+ declare function FeaturesList({ features, align, size, iconColor, anchorLink, }: FeaturesListProps): react_jsx_runtime.JSX.Element;
228
+
229
+ type Feature = {
230
+ icon?: string;
231
+ image?: string;
232
+ title?: string;
233
+ description?: string;
234
+ };
235
+ type FeatureGridProps = {
236
+ heading?: string;
237
+ description?: string;
238
+ features?: Feature[];
239
+ columns?: 2 | 3 | 4;
240
+ align?: "left" | "center" | "right";
241
+ size?: "small" | "medium" | "large";
242
+ iconColor?: string;
243
+ textColor?: string;
244
+ anchorLink?: string;
245
+ } & Record<string, unknown>;
246
+ declare function FeatureGrid({ heading, description, features, columns, align, size, iconColor, textColor, anchorLink, }: FeatureGridProps): react_jsx_runtime.JSX.Element;
247
+
248
+ type FooterProps = {
249
+ logo?: string;
250
+ copyright?: string;
251
+ backgroundColor?: string;
252
+ textColor?: string;
253
+ facebookUrl?: string;
254
+ instagramUrl?: string;
255
+ twitterUrl?: string;
256
+ tiktokUrl?: string;
257
+ } & Record<string, unknown> & PuckProps;
258
+ declare function Footer({ logo, copyright, backgroundColor, textColor, facebookUrl, instagramUrl, twitterUrl, puck, }: FooterProps): react_jsx_runtime.JSX.Element;
259
+
260
+ type NavItem = {
261
+ name: string;
262
+ url: string;
263
+ linkType?: "internal" | "external" | "scrollTo";
264
+ };
265
+ type TopbarProps = {
266
+ logo?: string;
267
+ logoUrl?: string;
268
+ navItems?: NavItem[];
269
+ backgroundColor?: string;
270
+ textColor?: string;
271
+ maxWidth?: string;
272
+ } & Record<string, unknown> & PuckProps;
273
+ declare function Topbar({ logo, logoUrl, navItems, backgroundColor, textColor, maxWidth, puck, }: TopbarProps): react_jsx_runtime.JSX.Element;
274
+
275
+ type PopupProps = {
276
+ ctaText?: string;
277
+ buttonColor?: string;
278
+ textColor?: string;
279
+ icon?: string;
280
+ iconPosition?: "left" | "right";
281
+ size?: "small" | "medium" | "large";
282
+ width?: "small" | "medium" | "large";
283
+ textLink?: boolean;
284
+ } & Record<string, unknown> & PuckProps;
285
+ declare function Popup({ ctaText, buttonColor, textColor, icon, iconPosition, size, width, textLink, puck, }: PopupProps): react_jsx_runtime.JSX.Element;
286
+
287
+ export { Button, type ButtonProps, Card, type CardProps, type CarouselImage, Columns, type ColumnsProps, Container, type ContainerProps, CustomImage, type CustomImageProps, Divider, type DividerProps, FeatureGrid, type FeatureGridProps, FeaturesList, type FeaturesListProps, Footer, type FooterProps, Heading, type HeadingProps, Icon, type IconProps, Image, ImageCarousel, type ImageCarouselProps, type ImageProps, Paragraph, type ParagraphProps, Popup, type PopupProps, Section, type SectionProps, Spacer, type SpacerProps, TextBlock, type TextBlockProps, ThemeableColorValue, Topbar, type TopbarProps, VideoEmbed, type VideoEmbedProps, availableIcons };