@opensite/ui 2.8.8 → 2.9.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 (147) hide show
  1. package/dist/about-culture-tabs.cjs +174 -174
  2. package/dist/about-culture-tabs.js +174 -174
  3. package/dist/about-developer-profile.cjs +200 -200
  4. package/dist/about-developer-profile.js +198 -198
  5. package/dist/about-developer-story.cjs +142 -142
  6. package/dist/about-developer-story.js +142 -142
  7. package/dist/about-mission-dual-image.cjs +142 -142
  8. package/dist/about-mission-dual-image.js +142 -142
  9. package/dist/about-mission-features.cjs +142 -142
  10. package/dist/about-mission-features.js +142 -142
  11. package/dist/about-network-spotlight.cjs +142 -142
  12. package/dist/about-network-spotlight.js +142 -142
  13. package/dist/about-story-expertise.cjs +142 -142
  14. package/dist/about-story-expertise.js +142 -142
  15. package/dist/about-streamline-team.cjs +142 -142
  16. package/dist/about-streamline-team.js +142 -142
  17. package/dist/carousel-feature-badge.cjs +162 -42
  18. package/dist/carousel-feature-badge.d.cts +14 -1
  19. package/dist/carousel-feature-badge.d.ts +14 -1
  20. package/dist/carousel-feature-badge.js +163 -43
  21. package/dist/community-initiatives.cjs +142 -142
  22. package/dist/community-initiatives.js +142 -142
  23. package/dist/components.cjs +723 -1378
  24. package/dist/components.d.cts +0 -2
  25. package/dist/components.d.ts +0 -2
  26. package/dist/components.js +633 -1287
  27. package/dist/contact-map.cjs +14 -1083
  28. package/dist/contact-map.d.cts +13 -3
  29. package/dist/contact-map.d.ts +13 -3
  30. package/dist/contact-map.js +14 -1083
  31. package/dist/cta-feature-checklist.cjs +142 -142
  32. package/dist/cta-feature-checklist.js +142 -142
  33. package/dist/faq-numbered-grid.cjs +142 -142
  34. package/dist/faq-numbered-grid.js +142 -142
  35. package/dist/feature-animated-carousel.cjs +142 -142
  36. package/dist/feature-animated-carousel.js +142 -142
  37. package/dist/feature-bento-utilities.cjs +142 -142
  38. package/dist/feature-bento-utilities.js +142 -142
  39. package/dist/feature-capabilities-grid.cjs +142 -142
  40. package/dist/feature-capabilities-grid.js +142 -142
  41. package/dist/feature-category-image-cards.cjs +142 -142
  42. package/dist/feature-category-image-cards.js +142 -142
  43. package/dist/feature-icon-grid-bordered.cjs +142 -142
  44. package/dist/feature-icon-grid-bordered.js +142 -142
  45. package/dist/feature-icon-grid-muted.cjs +142 -142
  46. package/dist/feature-icon-grid-muted.js +142 -142
  47. package/dist/feature-numbered-cards.cjs +142 -142
  48. package/dist/feature-numbered-cards.js +142 -142
  49. package/dist/feature-three-column-values.cjs +142 -142
  50. package/dist/feature-three-column-values.js +142 -142
  51. package/dist/hero-ad-campaign-expert.cjs +142 -142
  52. package/dist/hero-ad-campaign-expert.js +142 -142
  53. package/dist/hero-adaptable-product-grid.cjs +142 -142
  54. package/dist/hero-adaptable-product-grid.js +142 -142
  55. package/dist/hero-agency-animated-images.cjs +142 -142
  56. package/dist/hero-agency-animated-images.js +142 -142
  57. package/dist/hero-announcement-badge.cjs +142 -142
  58. package/dist/hero-announcement-badge.js +142 -142
  59. package/dist/hero-badge-image-split.cjs +142 -142
  60. package/dist/hero-badge-image-split.js +142 -142
  61. package/dist/hero-business-carousel-dots.cjs +142 -142
  62. package/dist/hero-business-carousel-dots.js +142 -142
  63. package/dist/hero-business-operations-mosaic.cjs +142 -142
  64. package/dist/hero-business-operations-mosaic.js +142 -142
  65. package/dist/hero-conversation-intelligence.cjs +142 -142
  66. package/dist/hero-conversation-intelligence.js +142 -142
  67. package/dist/hero-creative-studio-stacked.cjs +142 -142
  68. package/dist/hero-creative-studio-stacked.js +142 -142
  69. package/dist/hero-crm-streamlined.cjs +142 -142
  70. package/dist/hero-crm-streamlined.js +142 -142
  71. package/dist/hero-customer-support-layered.cjs +142 -142
  72. package/dist/hero-customer-support-layered.js +142 -142
  73. package/dist/hero-design-showcase-logos.cjs +142 -142
  74. package/dist/hero-design-showcase-logos.js +142 -142
  75. package/dist/hero-design-system-3d.cjs +142 -142
  76. package/dist/hero-design-system-3d.js +142 -142
  77. package/dist/hero-developer-tools-code.cjs +142 -142
  78. package/dist/hero-developer-tools-code.js +142 -142
  79. package/dist/hero-digital-agency-fullscreen.cjs +142 -142
  80. package/dist/hero-digital-agency-fullscreen.js +142 -142
  81. package/dist/hero-ecommerce-product-showcase.cjs +174 -174
  82. package/dist/hero-ecommerce-product-showcase.js +174 -174
  83. package/dist/hero-event-registration.cjs +142 -142
  84. package/dist/hero-event-registration.js +142 -142
  85. package/dist/hero-fullscreen-background-image.cjs +142 -142
  86. package/dist/hero-fullscreen-background-image.js +142 -142
  87. package/dist/hero-gradient-avatars-rating.cjs +142 -142
  88. package/dist/hero-gradient-avatars-rating.js +142 -142
  89. package/dist/hero-gradient-client-focused.cjs +142 -142
  90. package/dist/hero-gradient-client-focused.js +142 -142
  91. package/dist/hero-hiring-animated-text.cjs +142 -142
  92. package/dist/hero-hiring-animated-text.js +142 -142
  93. package/dist/hero-image-left-content.cjs +142 -142
  94. package/dist/hero-image-left-content.js +142 -142
  95. package/dist/hero-innovation-image-grid.cjs +142 -142
  96. package/dist/hero-innovation-image-grid.js +142 -142
  97. package/dist/hero-mental-health-team.cjs +142 -142
  98. package/dist/hero-mental-health-team.js +142 -142
  99. package/dist/hero-minimal-centered-dark.cjs +174 -174
  100. package/dist/hero-minimal-centered-dark.js +174 -174
  101. package/dist/hero-presentation-platform-video.cjs +142 -142
  102. package/dist/hero-presentation-platform-video.js +142 -142
  103. package/dist/hero-product-showcase-floating.cjs +174 -174
  104. package/dist/hero-product-showcase-floating.js +174 -174
  105. package/dist/hero-shared-inbox-layered.cjs +142 -142
  106. package/dist/hero-shared-inbox-layered.js +142 -142
  107. package/dist/hero-software-growth-video-dialog.cjs +142 -142
  108. package/dist/hero-software-growth-video-dialog.js +142 -142
  109. package/dist/hero-spiral-pattern-cards.cjs +174 -174
  110. package/dist/hero-spiral-pattern-cards.js +174 -174
  111. package/dist/hero-split-geometric-shapes.cjs +142 -142
  112. package/dist/hero-split-geometric-shapes.js +142 -142
  113. package/dist/hero-startup-launch-cta.cjs +174 -174
  114. package/dist/hero-startup-launch-cta.js +174 -174
  115. package/dist/hero-stats-social-proof.cjs +174 -174
  116. package/dist/hero-stats-social-proof.js +174 -174
  117. package/dist/hero-task-timer-animated.cjs +142 -142
  118. package/dist/hero-task-timer-animated.js +142 -142
  119. package/dist/hero-testimonial-image-grid.cjs +142 -142
  120. package/dist/hero-testimonial-image-grid.js +142 -142
  121. package/dist/hero-therapy-testimonial-grid.cjs +142 -142
  122. package/dist/hero-therapy-testimonial-grid.js +142 -142
  123. package/dist/hero-ui-library-showcase.cjs +142 -142
  124. package/dist/hero-ui-library-showcase.js +142 -142
  125. package/dist/hero-video-background-dark.cjs +174 -174
  126. package/dist/hero-video-background-dark.js +174 -174
  127. package/dist/hero-video-dialog-gradient.cjs +142 -142
  128. package/dist/hero-video-dialog-gradient.js +142 -142
  129. package/dist/hero-video-overlay-stars.cjs +142 -142
  130. package/dist/hero-video-overlay-stars.js +142 -142
  131. package/dist/hero-welcome-asymmetric-images.cjs +142 -142
  132. package/dist/hero-welcome-asymmetric-images.js +142 -142
  133. package/dist/index.cjs +725 -1380
  134. package/dist/index.d.cts +0 -2
  135. package/dist/index.d.ts +0 -2
  136. package/dist/index.js +634 -1288
  137. package/dist/registry.cjs +2201 -2827
  138. package/dist/registry.js +948 -1574
  139. package/dist/testimonials-masonry-grid.cjs +142 -142
  140. package/dist/testimonials-masonry-grid.js +142 -142
  141. package/dist/testimonials-stats-header.cjs +159 -159
  142. package/dist/testimonials-stats-header.js +159 -159
  143. package/package.json +4 -7
  144. package/dist/geo-map.cjs +0 -1117
  145. package/dist/geo-map.d.cts +0 -92
  146. package/dist/geo-map.d.ts +0 -92
  147. package/dist/geo-map.js +0 -1095
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React6 = require('react');
4
+ var React8 = require('react');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var reactSlot = require('@radix-ui/react-slot');
@@ -31,7 +31,7 @@ function _interopNamespace(e) {
31
31
  return Object.freeze(n);
32
32
  }
33
33
 
34
- var React6__namespace = /*#__PURE__*/_interopNamespace(React6);
34
+ var React8__namespace = /*#__PURE__*/_interopNamespace(React8);
35
35
  var useEmblaCarousel__default = /*#__PURE__*/_interopDefault(useEmblaCarousel);
36
36
 
37
37
  // components/blocks/carousel/carousel-feature-badge.tsx
@@ -145,7 +145,7 @@ function useNavigation({
145
145
  href,
146
146
  onClick
147
147
  } = {}) {
148
- const linkType = React6__namespace.useMemo(() => {
148
+ const linkType = React8__namespace.useMemo(() => {
149
149
  if (!href || href.trim() === "") {
150
150
  return onClick ? "none" : "none";
151
151
  }
@@ -166,7 +166,7 @@ function useNavigation({
166
166
  return "internal";
167
167
  }
168
168
  }, [href, onClick]);
169
- const normalizedHref = React6__namespace.useMemo(() => {
169
+ const normalizedHref = React8__namespace.useMemo(() => {
170
170
  if (!href || href.trim() === "") {
171
171
  return void 0;
172
172
  }
@@ -184,7 +184,7 @@ function useNavigation({
184
184
  return trimmed;
185
185
  }
186
186
  }, [href, linkType]);
187
- const target = React6__namespace.useMemo(() => {
187
+ const target = React8__namespace.useMemo(() => {
188
188
  switch (linkType) {
189
189
  case "external":
190
190
  return "_blank";
@@ -197,7 +197,7 @@ function useNavigation({
197
197
  return void 0;
198
198
  }
199
199
  }, [linkType]);
200
- const rel = React6__namespace.useMemo(() => {
200
+ const rel = React8__namespace.useMemo(() => {
201
201
  if (linkType === "external") {
202
202
  return "noopener noreferrer";
203
203
  }
@@ -206,7 +206,7 @@ function useNavigation({
206
206
  const isExternal = linkType === "external";
207
207
  const isInternal = linkType === "internal";
208
208
  const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
209
- const handleClick = React6__namespace.useCallback(
209
+ const handleClick = React8__namespace.useCallback(
210
210
  (event) => {
211
211
  if (onClick) {
212
212
  try {
@@ -390,7 +390,7 @@ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
390
390
  size: "default"
391
391
  }
392
392
  });
393
- var Pressable = React6__namespace.forwardRef(
393
+ var Pressable = React8__namespace.forwardRef(
394
394
  ({
395
395
  children,
396
396
  className,
@@ -489,7 +489,7 @@ var Pressable = React6__namespace.forwardRef(
489
489
  );
490
490
  Pressable.displayName = "Pressable";
491
491
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
492
- var DynamicIcon = React6__namespace.memo(function DynamicIcon2({
492
+ var DynamicIcon = React8__namespace.memo(function DynamicIcon2({
493
493
  apiKey,
494
494
  ...props
495
495
  }) {
@@ -563,7 +563,7 @@ var maxWidthStyles = {
563
563
  "4xl": "max-w-[1536px]",
564
564
  full: "max-w-full"
565
565
  };
566
- var Container = React6__namespace.default.forwardRef(
566
+ var Container = React8__namespace.default.forwardRef(
567
567
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
568
568
  const Component = as;
569
569
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -869,7 +869,7 @@ var spacingStyles = {
869
869
  };
870
870
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
871
871
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
872
- var Section = React6__namespace.default.forwardRef(
872
+ var Section = React8__namespace.default.forwardRef(
873
873
  ({
874
874
  id,
875
875
  title,
@@ -930,6 +930,102 @@ var Section = React6__namespace.default.forwardRef(
930
930
  }
931
931
  );
932
932
  Section.displayName = "Section";
933
+ function TextInner({ as, className, children, ...props }, ref) {
934
+ const Component = as || "span";
935
+ return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: cn(className), ...props, children });
936
+ }
937
+ var Text = React8__namespace.forwardRef(TextInner);
938
+ Text.displayName = "Text";
939
+ function isContentTextItem(item) {
940
+ return item !== null && typeof item === "object" && !React8__namespace.isValidElement(item) && "_type" in item && item._type === "text";
941
+ }
942
+ var ContentGroup = React8__namespace.forwardRef(
943
+ ({ items, className, children, ...props }, ref) => {
944
+ const hasContent = items && items.length > 0;
945
+ if (!hasContent) {
946
+ return null;
947
+ }
948
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn(className), ...props, children: [
949
+ items.map((item, idx) => {
950
+ if (isContentTextItem(item)) {
951
+ const { _type, ...textProps } = item;
952
+ return /* @__PURE__ */ jsxRuntime.jsx(Text, { ...textProps }, idx);
953
+ }
954
+ const reactNode = item;
955
+ if (React8__namespace.isValidElement(reactNode)) {
956
+ return React8__namespace.cloneElement(reactNode, { key: reactNode.key ?? idx });
957
+ }
958
+ return /* @__PURE__ */ jsxRuntime.jsx(React8__namespace.Fragment, { children: reactNode }, idx);
959
+ }),
960
+ children
961
+ ] });
962
+ }
963
+ );
964
+ ContentGroup.displayName = "ContentGroup";
965
+ var MOBILE_CLASSES = {
966
+ "fit-left": "items-start md:items-center",
967
+ "fit-center": "items-center",
968
+ "fit-right": "items-end md:items-center",
969
+ "full-left": "items-stretch md:items-center",
970
+ "full-center": "items-stretch md:items-center",
971
+ "full-right": "items-stretch md:items-center"
972
+ };
973
+ function BlockActions({
974
+ mobileConfig,
975
+ actionsClassName,
976
+ verticalSpacing = "mt-4 md:mt-8",
977
+ actions,
978
+ actionsSlot
979
+ }) {
980
+ const width = mobileConfig?.width ?? "full";
981
+ const position = mobileConfig?.position ?? "center";
982
+ const mobileLayoutClass = MOBILE_CLASSES[`${width}-${position}`];
983
+ if (actionsSlot) {
984
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { children: actionsSlot });
985
+ } else if (actions && actions?.length > 0) {
986
+ return /* @__PURE__ */ jsxRuntime.jsx(
987
+ "div",
988
+ {
989
+ className: cn(
990
+ "flex flex-col md:flex-row flex-wrap gap-4",
991
+ mobileLayoutClass,
992
+ actionsClassName,
993
+ verticalSpacing
994
+ ),
995
+ children: actions.map((action, index) => /* @__PURE__ */ jsxRuntime.jsx(ActionComponent, { action }, index))
996
+ }
997
+ );
998
+ } else {
999
+ return null;
1000
+ }
1001
+ }
1002
+ function ActionComponent({ action }) {
1003
+ const {
1004
+ label,
1005
+ icon,
1006
+ iconAfter,
1007
+ children,
1008
+ href,
1009
+ onClick,
1010
+ className: actionClassName,
1011
+ ...pressableProps
1012
+ } = action;
1013
+ return /* @__PURE__ */ jsxRuntime.jsx(
1014
+ Pressable,
1015
+ {
1016
+ href,
1017
+ onClick,
1018
+ asButton: action.asButton ?? true,
1019
+ className: actionClassName,
1020
+ ...pressableProps,
1021
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1022
+ icon,
1023
+ label,
1024
+ iconAfter
1025
+ ] })
1026
+ }
1027
+ );
1028
+ }
933
1029
  var SLIDE_LAYOUT_ASPECT_MAP = {
934
1030
  horizontal: "aspect-video",
935
1031
  vertical: "aspect-[9/16]",
@@ -950,28 +1046,31 @@ function CarouselFeatureBadge({
950
1046
  carouselClassName,
951
1047
  carouselItemClassName,
952
1048
  optixFlowConfig,
1049
+ actions,
1050
+ actionsSlot,
1051
+ actionsClassName,
953
1052
  background,
954
- spacing,
1053
+ spacing = "none",
955
1054
  pattern,
956
1055
  patternOpacity,
957
1056
  slideLayoutVariant = "square",
958
1057
  containerMaxWidth = "2xl"
959
1058
  }) {
960
1059
  const [emblaRef, emblaApi] = useEmblaCarousel__default.default();
961
- const [canScrollPrev, setCanScrollPrev] = React6__namespace.useState(false);
962
- const [canScrollNext, setCanScrollNext] = React6__namespace.useState(false);
963
- const scrollPrev = React6__namespace.useCallback(() => {
1060
+ const [canScrollPrev, setCanScrollPrev] = React8__namespace.useState(false);
1061
+ const [canScrollNext, setCanScrollNext] = React8__namespace.useState(false);
1062
+ const scrollPrev = React8__namespace.useCallback(() => {
964
1063
  emblaApi?.scrollPrev();
965
1064
  }, [emblaApi]);
966
- const scrollNext = React6__namespace.useCallback(() => {
1065
+ const scrollNext = React8__namespace.useCallback(() => {
967
1066
  emblaApi?.scrollNext();
968
1067
  }, [emblaApi]);
969
- const onSelect = React6__namespace.useCallback(() => {
1068
+ const onSelect = React8__namespace.useCallback(() => {
970
1069
  if (!emblaApi) return;
971
1070
  setCanScrollPrev(emblaApi.canScrollPrev());
972
1071
  setCanScrollNext(emblaApi.canScrollNext());
973
1072
  }, [emblaApi]);
974
- React6__namespace.useEffect(() => {
1073
+ React8__namespace.useEffect(() => {
975
1074
  if (!emblaApi) return;
976
1075
  onSelect();
977
1076
  emblaApi.on("reInit", onSelect);
@@ -1014,12 +1113,46 @@ function CarouselFeatureBadge({
1014
1113
  index
1015
1114
  ));
1016
1115
  };
1116
+ const headerItems = React8__namespace.useMemo(() => {
1117
+ const items2 = [];
1118
+ if (heading) {
1119
+ if (typeof heading === "string") {
1120
+ items2.push({
1121
+ _type: "text",
1122
+ as: "h2",
1123
+ className: cn(
1124
+ "text-left text-2xl font-semibold md:text-4xl lg:max-w-xl lg:text-6xl text-pretty",
1125
+ headingClassName
1126
+ ),
1127
+ children: heading
1128
+ });
1129
+ } else {
1130
+ items2.push(heading);
1131
+ }
1132
+ }
1133
+ if (description) {
1134
+ if (typeof description === "string") {
1135
+ items2.push({
1136
+ _type: "text",
1137
+ as: "p",
1138
+ className: cn(
1139
+ "max-w-full text-left text-lg leading-snug lg:max-w-sm text-balance text-lg",
1140
+ descriptionClassName
1141
+ ),
1142
+ children: description
1143
+ });
1144
+ } else {
1145
+ items2.push(description);
1146
+ }
1147
+ }
1148
+ return items2;
1149
+ }, [heading, headingClassName, description, descriptionClassName]);
1017
1150
  return /* @__PURE__ */ jsxRuntime.jsx(
1018
1151
  Section,
1019
1152
  {
1020
1153
  background,
1021
1154
  spacing,
1022
- className: cn(className),
1155
+ className,
1023
1156
  pattern,
1024
1157
  patternOpacity,
1025
1158
  containerMaxWidth,
@@ -1029,29 +1162,16 @@ function CarouselFeatureBadge({
1029
1162
  {
1030
1163
  className: cn("flex flex-col items-start gap-4", contentClassName),
1031
1164
  children: [
1032
- badge && /* @__PURE__ */ jsxRuntime.jsx("div", { className: badgeClassName, children: typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { children: badge }) : badge }),
1033
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
1034
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1035
- "h2",
1036
- {
1037
- className: cn(
1038
- "text-left text-xl font-semibold md:text-3xl lg:max-w-xl lg:text-4xl",
1039
- headingClassName
1040
- ),
1041
- children: heading
1042
- }
1043
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
1044
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1045
- "p",
1046
- {
1047
- className: cn(
1048
- "max-w-xl text-left text-lg leading-snug lg:max-w-sm",
1049
- descriptionClassName
1050
- ),
1051
- children: description
1052
- }
1053
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
1054
- ] })
1165
+ badge && (typeof badge === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { className: badgeClassName, children: badge }) : badge),
1166
+ /* @__PURE__ */ jsxRuntime.jsx(ContentGroup, { items: headerItems, className: "flex flex-col gap-2" }),
1167
+ /* @__PURE__ */ jsxRuntime.jsx(
1168
+ BlockActions,
1169
+ {
1170
+ actions,
1171
+ actionsSlot,
1172
+ actionsClassName
1173
+ }
1174
+ )
1055
1175
  ]
1056
1176
  }
1057
1177
  ),
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName, m as ContainerMaxWidth } from './community-initiatives-B8KCpwXH.cjs';
3
+ import { ActionConfig } from '@page-speed/maps/components/geo-map';
3
4
  import { I as ImageItem, O as OptixFlowConfig } from './blocks-BtDAbw8d.cjs';
4
5
  import 'react/jsx-runtime';
5
6
  import 'class-variance-authority';
@@ -101,7 +102,19 @@ interface CarouselFeatureBadgeProps {
101
102
  * Optional max width for the content container
102
103
  */
103
104
  containerMaxWidth?: ContainerMaxWidth;
105
+ /**
106
+ * Array of action configurations for CTA buttons
107
+ */
108
+ actions?: ActionConfig[];
109
+ /**
110
+ * Custom slot for rendering actions (overrides actions array)
111
+ */
112
+ actionsSlot?: React.ReactNode;
113
+ /**
114
+ * Additional CSS classes for the actions container
115
+ */
116
+ actionsClassName?: string;
104
117
  }
105
- declare function CarouselFeatureBadge({ badge, heading, description, items, itemsSlot, className, containerClassName, contentClassName, badgeClassName, headingClassName, descriptionClassName, carouselClassName, carouselItemClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, slideLayoutVariant, containerMaxWidth, }: CarouselFeatureBadgeProps): React.JSX.Element;
118
+ declare function CarouselFeatureBadge({ badge, heading, description, items, itemsSlot, className, containerClassName, contentClassName, badgeClassName, headingClassName, descriptionClassName, carouselClassName, carouselItemClassName, optixFlowConfig, actions, actionsSlot, actionsClassName, background, spacing, pattern, patternOpacity, slideLayoutVariant, containerMaxWidth, }: CarouselFeatureBadgeProps): React.JSX.Element;
106
119
 
107
120
  export { CarouselFeatureBadge, type CarouselFeatureBadgeProps };
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName, m as ContainerMaxWidth } from './community-initiatives-rTRuDt0r.js';
3
+ import { ActionConfig } from '@page-speed/maps/components/geo-map';
3
4
  import { I as ImageItem, O as OptixFlowConfig } from './blocks-BlWXj9GI.js';
4
5
  import 'react/jsx-runtime';
5
6
  import 'class-variance-authority';
@@ -101,7 +102,19 @@ interface CarouselFeatureBadgeProps {
101
102
  * Optional max width for the content container
102
103
  */
103
104
  containerMaxWidth?: ContainerMaxWidth;
105
+ /**
106
+ * Array of action configurations for CTA buttons
107
+ */
108
+ actions?: ActionConfig[];
109
+ /**
110
+ * Custom slot for rendering actions (overrides actions array)
111
+ */
112
+ actionsSlot?: React.ReactNode;
113
+ /**
114
+ * Additional CSS classes for the actions container
115
+ */
116
+ actionsClassName?: string;
104
117
  }
105
- declare function CarouselFeatureBadge({ badge, heading, description, items, itemsSlot, className, containerClassName, contentClassName, badgeClassName, headingClassName, descriptionClassName, carouselClassName, carouselItemClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, slideLayoutVariant, containerMaxWidth, }: CarouselFeatureBadgeProps): React.JSX.Element;
118
+ declare function CarouselFeatureBadge({ badge, heading, description, items, itemsSlot, className, containerClassName, contentClassName, badgeClassName, headingClassName, descriptionClassName, carouselClassName, carouselItemClassName, optixFlowConfig, actions, actionsSlot, actionsClassName, background, spacing, pattern, patternOpacity, slideLayoutVariant, containerMaxWidth, }: CarouselFeatureBadgeProps): React.JSX.Element;
106
119
 
107
120
  export { CarouselFeatureBadge, type CarouselFeatureBadgeProps };