@opensite/ui 2.2.3 → 2.2.5

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 (149) hide show
  1. package/dist/about-culture-tabs.cjs +83 -17
  2. package/dist/about-culture-tabs.js +83 -17
  3. package/dist/components.cjs +83 -17
  4. package/dist/components.js +83 -17
  5. package/dist/contact-callback.cjs +38 -552
  6. package/dist/contact-callback.d.cts +6 -74
  7. package/dist/contact-callback.d.ts +6 -74
  8. package/dist/contact-callback.js +36 -535
  9. package/dist/contact-careers.cjs +19 -555
  10. package/dist/contact-careers.d.cts +6 -62
  11. package/dist/contact-careers.d.ts +6 -62
  12. package/dist/contact-careers.js +18 -539
  13. package/dist/contact-catering.cjs +19 -531
  14. package/dist/contact-catering.d.cts +6 -61
  15. package/dist/contact-catering.d.ts +6 -61
  16. package/dist/contact-catering.js +18 -515
  17. package/dist/contact-consultation.cjs +87 -543
  18. package/dist/contact-consultation.d.cts +6 -61
  19. package/dist/contact-consultation.d.ts +6 -61
  20. package/dist/contact-consultation.js +88 -544
  21. package/dist/contact-demo.cjs +20 -563
  22. package/dist/contact-demo.d.cts +10 -50
  23. package/dist/contact-demo.d.ts +10 -50
  24. package/dist/contact-demo.js +19 -547
  25. package/dist/contact-emergency.cjs +1 -1
  26. package/dist/contact-emergency.js +1 -1
  27. package/dist/contact-event.cjs +19 -562
  28. package/dist/contact-event.d.cts +10 -50
  29. package/dist/contact-event.d.ts +10 -50
  30. package/dist/contact-event.js +19 -547
  31. package/dist/contact-feedback.cjs +19 -562
  32. package/dist/contact-feedback.d.cts +10 -50
  33. package/dist/contact-feedback.d.ts +10 -50
  34. package/dist/contact-feedback.js +19 -547
  35. package/dist/contact-fitness.cjs +19 -562
  36. package/dist/contact-fitness.d.cts +10 -50
  37. package/dist/contact-fitness.d.ts +10 -50
  38. package/dist/contact-fitness.js +19 -547
  39. package/dist/contact-guest.cjs +19 -562
  40. package/dist/contact-guest.d.cts +10 -50
  41. package/dist/contact-guest.d.ts +10 -50
  42. package/dist/contact-guest.js +19 -547
  43. package/dist/contact-insurance.cjs +19 -562
  44. package/dist/contact-insurance.d.cts +10 -50
  45. package/dist/contact-insurance.d.ts +10 -50
  46. package/dist/contact-insurance.js +19 -547
  47. package/dist/contact-interview.cjs +19 -562
  48. package/dist/contact-interview.d.cts +11 -51
  49. package/dist/contact-interview.d.ts +11 -51
  50. package/dist/contact-interview.js +19 -547
  51. package/dist/contact-locations.cjs +19 -562
  52. package/dist/contact-locations.d.cts +11 -51
  53. package/dist/contact-locations.d.ts +11 -51
  54. package/dist/contact-locations.js +19 -547
  55. package/dist/contact-maintenance.cjs +19 -562
  56. package/dist/contact-maintenance.d.cts +10 -50
  57. package/dist/contact-maintenance.d.ts +10 -50
  58. package/dist/contact-maintenance.js +19 -547
  59. package/dist/contact-map.cjs +19 -562
  60. package/dist/contact-map.d.cts +11 -51
  61. package/dist/contact-map.d.ts +11 -51
  62. package/dist/contact-map.js +19 -547
  63. package/dist/contact-minimal.cjs +19 -562
  64. package/dist/contact-minimal.d.cts +10 -50
  65. package/dist/contact-minimal.d.ts +10 -50
  66. package/dist/contact-minimal.js +19 -547
  67. package/dist/contact-moving.cjs +19 -562
  68. package/dist/contact-moving.d.cts +11 -51
  69. package/dist/contact-moving.d.ts +11 -51
  70. package/dist/contact-moving.js +19 -547
  71. package/dist/contact-multistep.cjs +19 -562
  72. package/dist/contact-multistep.d.cts +11 -51
  73. package/dist/contact-multistep.d.ts +11 -51
  74. package/dist/contact-multistep.js +19 -547
  75. package/dist/contact-partnership.cjs +22 -565
  76. package/dist/contact-partnership.d.cts +10 -50
  77. package/dist/contact-partnership.d.ts +10 -50
  78. package/dist/contact-partnership.js +22 -550
  79. package/dist/contact-photography.cjs +19 -562
  80. package/dist/contact-photography.d.cts +7 -50
  81. package/dist/contact-photography.d.ts +7 -50
  82. package/dist/contact-photography.js +18 -546
  83. package/dist/contact-press.cjs +19 -562
  84. package/dist/contact-press.d.cts +10 -50
  85. package/dist/contact-press.d.ts +10 -50
  86. package/dist/contact-press.js +19 -547
  87. package/dist/contact-quote.cjs +19 -562
  88. package/dist/contact-quote.d.cts +11 -51
  89. package/dist/contact-quote.d.ts +11 -51
  90. package/dist/contact-quote.js +19 -547
  91. package/dist/contact-referral.cjs +19 -562
  92. package/dist/contact-referral.d.cts +10 -50
  93. package/dist/contact-referral.d.ts +10 -50
  94. package/dist/contact-referral.js +19 -547
  95. package/dist/contact-report.cjs +19 -562
  96. package/dist/contact-report.d.cts +10 -50
  97. package/dist/contact-report.d.ts +10 -50
  98. package/dist/contact-report.js +19 -547
  99. package/dist/contact-reservation.cjs +19 -562
  100. package/dist/contact-reservation.d.cts +10 -50
  101. package/dist/contact-reservation.d.ts +10 -50
  102. package/dist/contact-reservation.js +19 -547
  103. package/dist/contact-retreat.cjs +88 -567
  104. package/dist/contact-retreat.d.cts +11 -51
  105. package/dist/contact-retreat.d.ts +11 -51
  106. package/dist/contact-retreat.js +90 -569
  107. package/dist/contact-rsvp.cjs +19 -562
  108. package/dist/contact-rsvp.d.cts +11 -51
  109. package/dist/contact-rsvp.d.ts +11 -51
  110. package/dist/contact-rsvp.js +19 -547
  111. package/dist/contact-sales.cjs +19 -562
  112. package/dist/contact-sales.d.cts +10 -50
  113. package/dist/contact-sales.d.ts +10 -50
  114. package/dist/contact-sales.js +19 -547
  115. package/dist/contact-schedule.cjs +19 -562
  116. package/dist/contact-schedule.d.cts +11 -51
  117. package/dist/contact-schedule.d.ts +11 -51
  118. package/dist/contact-schedule.js +19 -547
  119. package/dist/contact-sponsorship.cjs +19 -562
  120. package/dist/contact-sponsorship.d.cts +11 -51
  121. package/dist/contact-sponsorship.d.ts +11 -51
  122. package/dist/contact-sponsorship.js +19 -547
  123. package/dist/contact-support.cjs +19 -562
  124. package/dist/contact-support.d.cts +11 -51
  125. package/dist/contact-support.d.ts +11 -51
  126. package/dist/contact-support.js +19 -547
  127. package/dist/contact-tenant.cjs +19 -562
  128. package/dist/contact-tenant.d.cts +11 -51
  129. package/dist/contact-tenant.d.ts +11 -51
  130. package/dist/contact-tenant.js +19 -547
  131. package/dist/contact-volunteer.cjs +19 -562
  132. package/dist/contact-volunteer.d.cts +11 -51
  133. package/dist/contact-volunteer.d.ts +11 -51
  134. package/dist/contact-volunteer.js +19 -547
  135. package/dist/contact-warranty.cjs +19 -562
  136. package/dist/contact-warranty.d.cts +10 -50
  137. package/dist/contact-warranty.d.ts +10 -50
  138. package/dist/contact-warranty.js +19 -547
  139. package/dist/contact-wedding.cjs +19 -562
  140. package/dist/contact-wedding.d.cts +10 -50
  141. package/dist/contact-wedding.d.ts +10 -50
  142. package/dist/contact-wedding.js +19 -547
  143. package/dist/hero-presentation-platform-video.cjs +76 -27
  144. package/dist/hero-presentation-platform-video.js +76 -27
  145. package/dist/index.cjs +83 -17
  146. package/dist/index.js +83 -17
  147. package/dist/registry.cjs +768 -4196
  148. package/dist/registry.js +769 -4197
  149. package/package.json +12 -2
@@ -1010,6 +1010,38 @@ function ActionComponent({ action }) {
1010
1010
  }
1011
1011
  );
1012
1012
  }
1013
+ function TextInner({ as, className, children, ...props }, ref) {
1014
+ const Component = as || "span";
1015
+ return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: cn(className), ...props, children });
1016
+ }
1017
+ var Text = React3__namespace.forwardRef(TextInner);
1018
+ Text.displayName = "Text";
1019
+ function isContentTextItem(item) {
1020
+ return item !== null && typeof item === "object" && !React3__namespace.isValidElement(item) && "_type" in item && item._type === "text";
1021
+ }
1022
+ var ContentGroup = React3__namespace.forwardRef(
1023
+ ({ items, className, children, ...props }, ref) => {
1024
+ const hasContent = items && items.length > 0;
1025
+ if (!hasContent) {
1026
+ return null;
1027
+ }
1028
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn(className), ...props, children: [
1029
+ items.map((item, idx) => {
1030
+ if (isContentTextItem(item)) {
1031
+ const { _type, ...textProps } = item;
1032
+ return /* @__PURE__ */ jsxRuntime.jsx(Text, { ...textProps }, idx);
1033
+ }
1034
+ const reactNode = item;
1035
+ if (React3__namespace.isValidElement(reactNode)) {
1036
+ return React3__namespace.cloneElement(reactNode, { key: reactNode.key ?? idx });
1037
+ }
1038
+ return /* @__PURE__ */ jsxRuntime.jsx(React3__namespace.Fragment, { children: reactNode }, idx);
1039
+ }),
1040
+ children
1041
+ ] });
1042
+ }
1043
+ );
1044
+ ContentGroup.displayName = "ContentGroup";
1013
1045
  function AboutCultureTabs({
1014
1046
  badgeText,
1015
1047
  heading,
@@ -1043,6 +1075,53 @@ function AboutCultureTabs({
1043
1075
  const [activeTab, setActiveTab] = React3__namespace.useState(
1044
1076
  resolvedAspects[0]?.id || ""
1045
1077
  );
1078
+ const headerItems = React3.useMemo(() => {
1079
+ const items = [];
1080
+ if (badgeText) {
1081
+ if (typeof badgeText === "string") {
1082
+ items.push(
1083
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { className: cn("px-3 py-1", badgeClassName), children: badgeText }, "badge")
1084
+ );
1085
+ } else {
1086
+ items.push(badgeText);
1087
+ }
1088
+ }
1089
+ if (heading) {
1090
+ if (typeof heading === "string") {
1091
+ items.push({
1092
+ _type: "text",
1093
+ as: "h2",
1094
+ className: cn(
1095
+ "text-3xl font-bold tracking-tight md:text-4xl text-pretty",
1096
+ headingClassName
1097
+ ),
1098
+ children: heading
1099
+ });
1100
+ } else {
1101
+ items.push(heading);
1102
+ }
1103
+ }
1104
+ if (description) {
1105
+ if (typeof description === "string") {
1106
+ items.push({
1107
+ _type: "text",
1108
+ as: "p",
1109
+ className: cn("text-balance", descriptionClassName),
1110
+ children: description
1111
+ });
1112
+ } else {
1113
+ items.push(description);
1114
+ }
1115
+ }
1116
+ return items;
1117
+ }, [
1118
+ badgeText,
1119
+ badgeClassName,
1120
+ heading,
1121
+ headingClassName,
1122
+ description,
1123
+ descriptionClassName
1124
+ ]);
1046
1125
  const ctaImagesContent = React3.useMemo(() => {
1047
1126
  if (ctaImagesSlot) return ctaImagesSlot;
1048
1127
  if (!ctaImages || ctaImages.length === 0) return null;
@@ -1073,27 +1152,14 @@ function AboutCultureTabs({
1073
1152
  className,
1074
1153
  containerClassName,
1075
1154
  children: [
1076
- /* @__PURE__ */ jsxRuntime.jsxs(
1077
- "div",
1155
+ /* @__PURE__ */ jsxRuntime.jsx(
1156
+ ContentGroup,
1078
1157
  {
1158
+ items: headerItems,
1079
1159
  className: cn(
1080
1160
  "mx-auto mb-12 max-w-full md:max-w-md space-y-4 text-center flex flex-col items-center justify-center",
1081
1161
  headerClassName
1082
- ),
1083
- children: [
1084
- badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { className: cn("px-3 py-1", badgeClassName), children: badgeText }) : badgeText),
1085
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1086
- "h2",
1087
- {
1088
- className: cn(
1089
- "text-3xl font-bold tracking-tight md:text-4xl text-pretty",
1090
- headingClassName
1091
- ),
1092
- children: heading
1093
- }
1094
- ) : heading),
1095
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-balance", descriptionClassName), children: description }) : description)
1096
- ]
1162
+ )
1097
1163
  }
1098
1164
  ),
1099
1165
  aspectsSlot ? aspectsSlot : resolvedAspects.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
@@ -988,6 +988,38 @@ function ActionComponent({ action }) {
988
988
  }
989
989
  );
990
990
  }
991
+ function TextInner({ as, className, children, ...props }, ref) {
992
+ const Component = as || "span";
993
+ return /* @__PURE__ */ jsx(Component, { ref, className: cn(className), ...props, children });
994
+ }
995
+ var Text = React3.forwardRef(TextInner);
996
+ Text.displayName = "Text";
997
+ function isContentTextItem(item) {
998
+ return item !== null && typeof item === "object" && !React3.isValidElement(item) && "_type" in item && item._type === "text";
999
+ }
1000
+ var ContentGroup = React3.forwardRef(
1001
+ ({ items, className, children, ...props }, ref) => {
1002
+ const hasContent = items && items.length > 0;
1003
+ if (!hasContent) {
1004
+ return null;
1005
+ }
1006
+ return /* @__PURE__ */ jsxs("div", { ref, className: cn(className), ...props, children: [
1007
+ items.map((item, idx) => {
1008
+ if (isContentTextItem(item)) {
1009
+ const { _type, ...textProps } = item;
1010
+ return /* @__PURE__ */ jsx(Text, { ...textProps }, idx);
1011
+ }
1012
+ const reactNode = item;
1013
+ if (React3.isValidElement(reactNode)) {
1014
+ return React3.cloneElement(reactNode, { key: reactNode.key ?? idx });
1015
+ }
1016
+ return /* @__PURE__ */ jsx(React3.Fragment, { children: reactNode }, idx);
1017
+ }),
1018
+ children
1019
+ ] });
1020
+ }
1021
+ );
1022
+ ContentGroup.displayName = "ContentGroup";
991
1023
  function AboutCultureTabs({
992
1024
  badgeText,
993
1025
  heading,
@@ -1021,6 +1053,53 @@ function AboutCultureTabs({
1021
1053
  const [activeTab, setActiveTab] = React3.useState(
1022
1054
  resolvedAspects[0]?.id || ""
1023
1055
  );
1056
+ const headerItems = useMemo(() => {
1057
+ const items = [];
1058
+ if (badgeText) {
1059
+ if (typeof badgeText === "string") {
1060
+ items.push(
1061
+ /* @__PURE__ */ jsx(Badge, { className: cn("px-3 py-1", badgeClassName), children: badgeText }, "badge")
1062
+ );
1063
+ } else {
1064
+ items.push(badgeText);
1065
+ }
1066
+ }
1067
+ if (heading) {
1068
+ if (typeof heading === "string") {
1069
+ items.push({
1070
+ _type: "text",
1071
+ as: "h2",
1072
+ className: cn(
1073
+ "text-3xl font-bold tracking-tight md:text-4xl text-pretty",
1074
+ headingClassName
1075
+ ),
1076
+ children: heading
1077
+ });
1078
+ } else {
1079
+ items.push(heading);
1080
+ }
1081
+ }
1082
+ if (description) {
1083
+ if (typeof description === "string") {
1084
+ items.push({
1085
+ _type: "text",
1086
+ as: "p",
1087
+ className: cn("text-balance", descriptionClassName),
1088
+ children: description
1089
+ });
1090
+ } else {
1091
+ items.push(description);
1092
+ }
1093
+ }
1094
+ return items;
1095
+ }, [
1096
+ badgeText,
1097
+ badgeClassName,
1098
+ heading,
1099
+ headingClassName,
1100
+ description,
1101
+ descriptionClassName
1102
+ ]);
1024
1103
  const ctaImagesContent = useMemo(() => {
1025
1104
  if (ctaImagesSlot) return ctaImagesSlot;
1026
1105
  if (!ctaImages || ctaImages.length === 0) return null;
@@ -1051,27 +1130,14 @@ function AboutCultureTabs({
1051
1130
  className,
1052
1131
  containerClassName,
1053
1132
  children: [
1054
- /* @__PURE__ */ jsxs(
1055
- "div",
1133
+ /* @__PURE__ */ jsx(
1134
+ ContentGroup,
1056
1135
  {
1136
+ items: headerItems,
1057
1137
  className: cn(
1058
1138
  "mx-auto mb-12 max-w-full md:max-w-md space-y-4 text-center flex flex-col items-center justify-center",
1059
1139
  headerClassName
1060
- ),
1061
- children: [
1062
- badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx(Badge, { className: cn("px-3 py-1", badgeClassName), children: badgeText }) : badgeText),
1063
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
1064
- "h2",
1065
- {
1066
- className: cn(
1067
- "text-3xl font-bold tracking-tight md:text-4xl text-pretty",
1068
- headingClassName
1069
- ),
1070
- children: heading
1071
- }
1072
- ) : heading),
1073
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-balance", descriptionClassName), children: description }) : description)
1074
- ]
1140
+ )
1075
1141
  }
1076
1142
  ),
1077
1143
  aspectsSlot ? aspectsSlot : resolvedAspects.length > 0 ? /* @__PURE__ */ jsxs(
@@ -2673,6 +2673,38 @@ function ActionComponent({ action }) {
2673
2673
  }
2674
2674
  );
2675
2675
  }
2676
+ function TextInner({ as, className, children, ...props }, ref) {
2677
+ const Component = as || "span";
2678
+ return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: cn(className), ...props, children });
2679
+ }
2680
+ var Text = React4__namespace.forwardRef(TextInner);
2681
+ Text.displayName = "Text";
2682
+ function isContentTextItem(item) {
2683
+ return item !== null && typeof item === "object" && !React4__namespace.isValidElement(item) && "_type" in item && item._type === "text";
2684
+ }
2685
+ var ContentGroup = React4__namespace.forwardRef(
2686
+ ({ items, className, children, ...props }, ref) => {
2687
+ const hasContent = items && items.length > 0;
2688
+ if (!hasContent) {
2689
+ return null;
2690
+ }
2691
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn(className), ...props, children: [
2692
+ items.map((item, idx) => {
2693
+ if (isContentTextItem(item)) {
2694
+ const { _type, ...textProps } = item;
2695
+ return /* @__PURE__ */ jsxRuntime.jsx(Text, { ...textProps }, idx);
2696
+ }
2697
+ const reactNode = item;
2698
+ if (React4__namespace.isValidElement(reactNode)) {
2699
+ return React4__namespace.cloneElement(reactNode, { key: reactNode.key ?? idx });
2700
+ }
2701
+ return /* @__PURE__ */ jsxRuntime.jsx(React4__namespace.Fragment, { children: reactNode }, idx);
2702
+ }),
2703
+ children
2704
+ ] });
2705
+ }
2706
+ );
2707
+ ContentGroup.displayName = "ContentGroup";
2676
2708
  function AboutCultureTabs({
2677
2709
  badgeText,
2678
2710
  heading,
@@ -2706,6 +2738,53 @@ function AboutCultureTabs({
2706
2738
  const [activeTab, setActiveTab] = React4__namespace.useState(
2707
2739
  resolvedAspects[0]?.id || ""
2708
2740
  );
2741
+ const headerItems = React4.useMemo(() => {
2742
+ const items = [];
2743
+ if (badgeText) {
2744
+ if (typeof badgeText === "string") {
2745
+ items.push(
2746
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { className: cn("px-3 py-1", badgeClassName), children: badgeText }, "badge")
2747
+ );
2748
+ } else {
2749
+ items.push(badgeText);
2750
+ }
2751
+ }
2752
+ if (heading) {
2753
+ if (typeof heading === "string") {
2754
+ items.push({
2755
+ _type: "text",
2756
+ as: "h2",
2757
+ className: cn(
2758
+ "text-3xl font-bold tracking-tight md:text-4xl text-pretty",
2759
+ headingClassName
2760
+ ),
2761
+ children: heading
2762
+ });
2763
+ } else {
2764
+ items.push(heading);
2765
+ }
2766
+ }
2767
+ if (description) {
2768
+ if (typeof description === "string") {
2769
+ items.push({
2770
+ _type: "text",
2771
+ as: "p",
2772
+ className: cn("text-balance", descriptionClassName),
2773
+ children: description
2774
+ });
2775
+ } else {
2776
+ items.push(description);
2777
+ }
2778
+ }
2779
+ return items;
2780
+ }, [
2781
+ badgeText,
2782
+ badgeClassName,
2783
+ heading,
2784
+ headingClassName,
2785
+ description,
2786
+ descriptionClassName
2787
+ ]);
2709
2788
  const ctaImagesContent = React4.useMemo(() => {
2710
2789
  if (ctaImagesSlot) return ctaImagesSlot;
2711
2790
  if (!ctaImages || ctaImages.length === 0) return null;
@@ -2736,27 +2815,14 @@ function AboutCultureTabs({
2736
2815
  className,
2737
2816
  containerClassName,
2738
2817
  children: [
2739
- /* @__PURE__ */ jsxRuntime.jsxs(
2740
- "div",
2818
+ /* @__PURE__ */ jsxRuntime.jsx(
2819
+ ContentGroup,
2741
2820
  {
2821
+ items: headerItems,
2742
2822
  className: cn(
2743
2823
  "mx-auto mb-12 max-w-full md:max-w-md space-y-4 text-center flex flex-col items-center justify-center",
2744
2824
  headerClassName
2745
- ),
2746
- children: [
2747
- badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { className: cn("px-3 py-1", badgeClassName), children: badgeText }) : badgeText),
2748
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
2749
- "h2",
2750
- {
2751
- className: cn(
2752
- "text-3xl font-bold tracking-tight md:text-4xl text-pretty",
2753
- headingClassName
2754
- ),
2755
- children: heading
2756
- }
2757
- ) : heading),
2758
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-balance", descriptionClassName), children: description }) : description)
2759
- ]
2825
+ )
2760
2826
  }
2761
2827
  ),
2762
2828
  aspectsSlot ? aspectsSlot : resolvedAspects.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2650,6 +2650,38 @@ function ActionComponent({ action }) {
2650
2650
  }
2651
2651
  );
2652
2652
  }
2653
+ function TextInner({ as, className, children, ...props }, ref) {
2654
+ const Component = as || "span";
2655
+ return /* @__PURE__ */ jsx(Component, { ref, className: cn(className), ...props, children });
2656
+ }
2657
+ var Text = React4.forwardRef(TextInner);
2658
+ Text.displayName = "Text";
2659
+ function isContentTextItem(item) {
2660
+ return item !== null && typeof item === "object" && !React4.isValidElement(item) && "_type" in item && item._type === "text";
2661
+ }
2662
+ var ContentGroup = React4.forwardRef(
2663
+ ({ items, className, children, ...props }, ref) => {
2664
+ const hasContent = items && items.length > 0;
2665
+ if (!hasContent) {
2666
+ return null;
2667
+ }
2668
+ return /* @__PURE__ */ jsxs("div", { ref, className: cn(className), ...props, children: [
2669
+ items.map((item, idx) => {
2670
+ if (isContentTextItem(item)) {
2671
+ const { _type, ...textProps } = item;
2672
+ return /* @__PURE__ */ jsx(Text, { ...textProps }, idx);
2673
+ }
2674
+ const reactNode = item;
2675
+ if (React4.isValidElement(reactNode)) {
2676
+ return React4.cloneElement(reactNode, { key: reactNode.key ?? idx });
2677
+ }
2678
+ return /* @__PURE__ */ jsx(React4.Fragment, { children: reactNode }, idx);
2679
+ }),
2680
+ children
2681
+ ] });
2682
+ }
2683
+ );
2684
+ ContentGroup.displayName = "ContentGroup";
2653
2685
  function AboutCultureTabs({
2654
2686
  badgeText,
2655
2687
  heading,
@@ -2683,6 +2715,53 @@ function AboutCultureTabs({
2683
2715
  const [activeTab, setActiveTab] = React4.useState(
2684
2716
  resolvedAspects[0]?.id || ""
2685
2717
  );
2718
+ const headerItems = useMemo(() => {
2719
+ const items = [];
2720
+ if (badgeText) {
2721
+ if (typeof badgeText === "string") {
2722
+ items.push(
2723
+ /* @__PURE__ */ jsx(Badge, { className: cn("px-3 py-1", badgeClassName), children: badgeText }, "badge")
2724
+ );
2725
+ } else {
2726
+ items.push(badgeText);
2727
+ }
2728
+ }
2729
+ if (heading) {
2730
+ if (typeof heading === "string") {
2731
+ items.push({
2732
+ _type: "text",
2733
+ as: "h2",
2734
+ className: cn(
2735
+ "text-3xl font-bold tracking-tight md:text-4xl text-pretty",
2736
+ headingClassName
2737
+ ),
2738
+ children: heading
2739
+ });
2740
+ } else {
2741
+ items.push(heading);
2742
+ }
2743
+ }
2744
+ if (description) {
2745
+ if (typeof description === "string") {
2746
+ items.push({
2747
+ _type: "text",
2748
+ as: "p",
2749
+ className: cn("text-balance", descriptionClassName),
2750
+ children: description
2751
+ });
2752
+ } else {
2753
+ items.push(description);
2754
+ }
2755
+ }
2756
+ return items;
2757
+ }, [
2758
+ badgeText,
2759
+ badgeClassName,
2760
+ heading,
2761
+ headingClassName,
2762
+ description,
2763
+ descriptionClassName
2764
+ ]);
2686
2765
  const ctaImagesContent = useMemo(() => {
2687
2766
  if (ctaImagesSlot) return ctaImagesSlot;
2688
2767
  if (!ctaImages || ctaImages.length === 0) return null;
@@ -2713,27 +2792,14 @@ function AboutCultureTabs({
2713
2792
  className,
2714
2793
  containerClassName,
2715
2794
  children: [
2716
- /* @__PURE__ */ jsxs(
2717
- "div",
2795
+ /* @__PURE__ */ jsx(
2796
+ ContentGroup,
2718
2797
  {
2798
+ items: headerItems,
2719
2799
  className: cn(
2720
2800
  "mx-auto mb-12 max-w-full md:max-w-md space-y-4 text-center flex flex-col items-center justify-center",
2721
2801
  headerClassName
2722
- ),
2723
- children: [
2724
- badgeText && (typeof badgeText === "string" ? /* @__PURE__ */ jsx(Badge, { className: cn("px-3 py-1", badgeClassName), children: badgeText }) : badgeText),
2725
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
2726
- "h2",
2727
- {
2728
- className: cn(
2729
- "text-3xl font-bold tracking-tight md:text-4xl text-pretty",
2730
- headingClassName
2731
- ),
2732
- children: heading
2733
- }
2734
- ) : heading),
2735
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-balance", descriptionClassName), children: description }) : description)
2736
- ]
2802
+ )
2737
2803
  }
2738
2804
  ),
2739
2805
  aspectsSlot ? aspectsSlot : resolvedAspects.length > 0 ? /* @__PURE__ */ jsxs(