@opensite/ui 2.4.8 → 2.4.9

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 (91) hide show
  1. package/dist/about-developer-profile.cjs +1 -1
  2. package/dist/about-developer-profile.js +1 -1
  3. package/dist/about-stats-sidebar.cjs +5 -3
  4. package/dist/about-stats-sidebar.js +5 -3
  5. package/dist/about-story-hero.cjs +119 -105
  6. package/dist/about-story-hero.js +101 -102
  7. package/dist/components.cjs +1 -1
  8. package/dist/components.js +1 -1
  9. package/dist/cta-accent-background.cjs +8 -69
  10. package/dist/cta-accent-background.d.cts +1 -1
  11. package/dist/cta-accent-background.d.ts +1 -1
  12. package/dist/cta-accent-background.js +8 -69
  13. package/dist/cta-app-download-newsletter.cjs +4 -81
  14. package/dist/cta-app-download-newsletter.js +4 -81
  15. package/dist/faq-badge-support.cjs +97 -84
  16. package/dist/faq-badge-support.d.cts +1 -1
  17. package/dist/faq-badge-support.d.ts +1 -1
  18. package/dist/faq-badge-support.js +97 -83
  19. package/dist/faq-sidebar-navigation.cjs +106 -72
  20. package/dist/faq-sidebar-navigation.d.cts +1 -1
  21. package/dist/faq-sidebar-navigation.d.ts +1 -1
  22. package/dist/faq-sidebar-navigation.js +104 -70
  23. package/dist/faq-simple-accordion.cjs +83 -50
  24. package/dist/faq-simple-accordion.d.cts +13 -1
  25. package/dist/faq-simple-accordion.d.ts +13 -1
  26. package/dist/faq-simple-accordion.js +82 -46
  27. package/dist/feature-accordion-image.cjs +115 -85
  28. package/dist/feature-accordion-image.js +113 -83
  29. package/dist/feature-animated-carousel.cjs +2 -2
  30. package/dist/feature-animated-carousel.js +2 -2
  31. package/dist/feature-image-cards-three-column.cjs +2 -2
  32. package/dist/feature-image-cards-three-column.js +2 -2
  33. package/dist/footer-accordion-social.cjs +1 -1
  34. package/dist/footer-accordion-social.js +1 -1
  35. package/dist/footer-animated-social.cjs +1 -1
  36. package/dist/footer-animated-social.js +1 -1
  37. package/dist/footer-brand-description.cjs +1 -1
  38. package/dist/footer-brand-description.js +1 -1
  39. package/dist/footer-brand-links-contact.cjs +1 -1
  40. package/dist/footer-brand-links-contact.js +1 -1
  41. package/dist/footer-comprehensive-links.cjs +1 -1
  42. package/dist/footer-comprehensive-links.js +1 -1
  43. package/dist/footer-contact-card.cjs +1 -1
  44. package/dist/footer-contact-card.js +1 -1
  45. package/dist/footer-cta-banner.cjs +1 -1
  46. package/dist/footer-cta-banner.js +1 -1
  47. package/dist/footer-cta-social.cjs +1 -1
  48. package/dist/footer-cta-social.js +1 -1
  49. package/dist/footer-info-cards-accordion.cjs +1 -1
  50. package/dist/footer-info-cards-accordion.js +1 -1
  51. package/dist/footer-nav-social.cjs +1 -1
  52. package/dist/footer-nav-social.js +1 -1
  53. package/dist/footer-newsletter-contact.cjs +1 -1
  54. package/dist/footer-newsletter-contact.js +1 -1
  55. package/dist/footer-newsletter-grid.cjs +1 -1
  56. package/dist/footer-newsletter-grid.js +1 -1
  57. package/dist/footer-newsletter-minimal.cjs +1 -1
  58. package/dist/footer-newsletter-minimal.js +1 -1
  59. package/dist/footer-social-apps.cjs +1 -1
  60. package/dist/footer-social-apps.js +1 -1
  61. package/dist/footer-social-newsletter.cjs +1 -1
  62. package/dist/footer-social-newsletter.js +1 -1
  63. package/dist/footer-split-image-accordion.cjs +1 -1
  64. package/dist/footer-split-image-accordion.js +1 -1
  65. package/dist/hero-coming-soon-countdown.cjs +1 -1
  66. package/dist/hero-coming-soon-countdown.js +1 -1
  67. package/dist/hero-product-showcase-floating.cjs +120 -90
  68. package/dist/hero-product-showcase-floating.d.cts +5 -1
  69. package/dist/hero-product-showcase-floating.d.ts +5 -1
  70. package/dist/hero-product-showcase-floating.js +120 -90
  71. package/dist/index.cjs +1 -1
  72. package/dist/index.js +1 -1
  73. package/dist/link-page-bento-layout.cjs +1 -1
  74. package/dist/link-page-bento-layout.js +1 -1
  75. package/dist/link-page-grid-cards.cjs +1 -1
  76. package/dist/link-page-grid-cards.js +1 -1
  77. package/dist/link-page-minimal-profile.cjs +1 -1
  78. package/dist/link-page-minimal-profile.js +1 -1
  79. package/dist/link-page-newsletter-social.cjs +1 -1
  80. package/dist/link-page-newsletter-social.js +1 -1
  81. package/dist/link-tree-block.cjs +1 -1
  82. package/dist/link-tree-block.js +1 -1
  83. package/dist/navbar-fullscreen-menu.cjs +1 -1
  84. package/dist/navbar-fullscreen-menu.js +1 -1
  85. package/dist/navbar-transparent-overlay.cjs +1 -1
  86. package/dist/navbar-transparent-overlay.js +1 -1
  87. package/dist/registry.cjs +396 -289
  88. package/dist/registry.js +396 -289
  89. package/dist/social-link-icon.cjs +1 -1
  90. package/dist/social-link-icon.js +1 -1
  91. package/package.json +2 -2
@@ -1001,7 +1001,7 @@ var platformIconMap = {
1001
1001
  yelp: "cib/yelp",
1002
1002
  spotify: "cib/spotify",
1003
1003
  apple: "cib/apple",
1004
- x: "line-md/twitter-x-alt",
1004
+ x: "prime/twitter",
1005
1005
  github: "cib/github",
1006
1006
  snapchat: "cib/snapchat",
1007
1007
  discord: "cib/discord",
@@ -980,7 +980,7 @@ var platformIconMap = {
980
980
  yelp: "cib/yelp",
981
981
  spotify: "cib/spotify",
982
982
  apple: "cib/apple",
983
- x: "line-md/twitter-x-alt",
983
+ x: "prime/twitter",
984
984
  github: "cib/github",
985
985
  snapchat: "cib/snapchat",
986
986
  discord: "cib/discord",
@@ -1001,7 +1001,7 @@ var platformIconMap = {
1001
1001
  yelp: "cib/yelp",
1002
1002
  spotify: "cib/spotify",
1003
1003
  apple: "cib/apple",
1004
- x: "line-md/twitter-x-alt",
1004
+ x: "prime/twitter",
1005
1005
  github: "cib/github",
1006
1006
  snapchat: "cib/snapchat",
1007
1007
  discord: "cib/discord",
@@ -980,7 +980,7 @@ var platformIconMap = {
980
980
  yelp: "cib/yelp",
981
981
  spotify: "cib/spotify",
982
982
  apple: "cib/apple",
983
- x: "line-md/twitter-x-alt",
983
+ x: "prime/twitter",
984
984
  github: "cib/github",
985
985
  snapchat: "cib/snapchat",
986
986
  discord: "cib/discord",
@@ -1447,7 +1447,7 @@ var platformIconMap = {
1447
1447
  yelp: "cib/yelp",
1448
1448
  spotify: "cib/spotify",
1449
1449
  apple: "cib/apple",
1450
- x: "line-md/twitter-x-alt",
1450
+ x: "prime/twitter",
1451
1451
  github: "cib/github",
1452
1452
  snapchat: "cib/snapchat",
1453
1453
  discord: "cib/discord",
@@ -1426,7 +1426,7 @@ var platformIconMap = {
1426
1426
  yelp: "cib/yelp",
1427
1427
  spotify: "cib/spotify",
1428
1428
  apple: "cib/apple",
1429
- x: "line-md/twitter-x-alt",
1429
+ x: "prime/twitter",
1430
1430
  github: "cib/github",
1431
1431
  snapchat: "cib/snapchat",
1432
1432
  discord: "cib/discord",
@@ -1447,7 +1447,7 @@ var platformIconMap = {
1447
1447
  yelp: "cib/yelp",
1448
1448
  spotify: "cib/spotify",
1449
1449
  apple: "cib/apple",
1450
- x: "line-md/twitter-x-alt",
1450
+ x: "prime/twitter",
1451
1451
  github: "cib/github",
1452
1452
  snapchat: "cib/snapchat",
1453
1453
  discord: "cib/discord",
@@ -1426,7 +1426,7 @@ var platformIconMap = {
1426
1426
  yelp: "cib/yelp",
1427
1427
  spotify: "cib/spotify",
1428
1428
  apple: "cib/apple",
1429
- x: "line-md/twitter-x-alt",
1429
+ x: "prime/twitter",
1430
1430
  github: "cib/github",
1431
1431
  snapchat: "cib/snapchat",
1432
1432
  discord: "cib/discord",
@@ -1375,7 +1375,7 @@ var platformIconMap = {
1375
1375
  yelp: "cib/yelp",
1376
1376
  spotify: "cib/spotify",
1377
1377
  apple: "cib/apple",
1378
- x: "line-md/twitter-x-alt",
1378
+ x: "prime/twitter",
1379
1379
  github: "cib/github",
1380
1380
  snapchat: "cib/snapchat",
1381
1381
  discord: "cib/discord",
@@ -1354,7 +1354,7 @@ var platformIconMap = {
1354
1354
  yelp: "cib/yelp",
1355
1355
  spotify: "cib/spotify",
1356
1356
  apple: "cib/apple",
1357
- x: "line-md/twitter-x-alt",
1357
+ x: "prime/twitter",
1358
1358
  github: "cib/github",
1359
1359
  snapchat: "cib/snapchat",
1360
1360
  discord: "cib/discord",
@@ -1118,7 +1118,7 @@ var platformIconMap = {
1118
1118
  yelp: "cib/yelp",
1119
1119
  spotify: "cib/spotify",
1120
1120
  apple: "cib/apple",
1121
- x: "line-md/twitter-x-alt",
1121
+ x: "prime/twitter",
1122
1122
  github: "cib/github",
1123
1123
  snapchat: "cib/snapchat",
1124
1124
  discord: "cib/discord",
@@ -1096,7 +1096,7 @@ var platformIconMap = {
1096
1096
  yelp: "cib/yelp",
1097
1097
  spotify: "cib/spotify",
1098
1098
  apple: "cib/apple",
1099
- x: "line-md/twitter-x-alt",
1099
+ x: "prime/twitter",
1100
1100
  github: "cib/github",
1101
1101
  snapchat: "cib/snapchat",
1102
1102
  discord: "cib/discord",
@@ -1447,7 +1447,7 @@ var platformIconMap = {
1447
1447
  yelp: "cib/yelp",
1448
1448
  spotify: "cib/spotify",
1449
1449
  apple: "cib/apple",
1450
- x: "line-md/twitter-x-alt",
1450
+ x: "prime/twitter",
1451
1451
  github: "cib/github",
1452
1452
  snapchat: "cib/snapchat",
1453
1453
  discord: "cib/discord",
@@ -1426,7 +1426,7 @@ var platformIconMap = {
1426
1426
  yelp: "cib/yelp",
1427
1427
  spotify: "cib/spotify",
1428
1428
  apple: "cib/apple",
1429
- x: "line-md/twitter-x-alt",
1429
+ x: "prime/twitter",
1430
1430
  github: "cib/github",
1431
1431
  snapchat: "cib/snapchat",
1432
1432
  discord: "cib/discord",
@@ -1078,7 +1078,7 @@ var platformIconMap = {
1078
1078
  yelp: "cib/yelp",
1079
1079
  spotify: "cib/spotify",
1080
1080
  apple: "cib/apple",
1081
- x: "line-md/twitter-x-alt",
1081
+ x: "prime/twitter",
1082
1082
  github: "cib/github",
1083
1083
  snapchat: "cib/snapchat",
1084
1084
  discord: "cib/discord",
@@ -1056,7 +1056,7 @@ var platformIconMap = {
1056
1056
  yelp: "cib/yelp",
1057
1057
  spotify: "cib/spotify",
1058
1058
  apple: "cib/apple",
1059
- x: "line-md/twitter-x-alt",
1059
+ x: "prime/twitter",
1060
1060
  github: "cib/github",
1061
1061
  snapchat: "cib/snapchat",
1062
1062
  discord: "cib/discord",
@@ -1447,7 +1447,7 @@ var platformIconMap = {
1447
1447
  yelp: "cib/yelp",
1448
1448
  spotify: "cib/spotify",
1449
1449
  apple: "cib/apple",
1450
- x: "line-md/twitter-x-alt",
1450
+ x: "prime/twitter",
1451
1451
  github: "cib/github",
1452
1452
  snapchat: "cib/snapchat",
1453
1453
  discord: "cib/discord",
@@ -1426,7 +1426,7 @@ var platformIconMap = {
1426
1426
  yelp: "cib/yelp",
1427
1427
  spotify: "cib/spotify",
1428
1428
  apple: "cib/apple",
1429
- x: "line-md/twitter-x-alt",
1429
+ x: "prime/twitter",
1430
1430
  github: "cib/github",
1431
1431
  snapchat: "cib/snapchat",
1432
1432
  discord: "cib/discord",
@@ -1005,7 +1005,7 @@ var platformIconMap = {
1005
1005
  yelp: "cib/yelp",
1006
1006
  spotify: "cib/spotify",
1007
1007
  apple: "cib/apple",
1008
- x: "line-md/twitter-x-alt",
1008
+ x: "prime/twitter",
1009
1009
  github: "cib/github",
1010
1010
  snapchat: "cib/snapchat",
1011
1011
  discord: "cib/discord",
@@ -984,7 +984,7 @@ var platformIconMap = {
984
984
  yelp: "cib/yelp",
985
985
  spotify: "cib/spotify",
986
986
  apple: "cib/apple",
987
- x: "line-md/twitter-x-alt",
987
+ x: "prime/twitter",
988
988
  github: "cib/github",
989
989
  snapchat: "cib/snapchat",
990
990
  discord: "cib/discord",
@@ -1447,7 +1447,7 @@ var platformIconMap = {
1447
1447
  yelp: "cib/yelp",
1448
1448
  spotify: "cib/spotify",
1449
1449
  apple: "cib/apple",
1450
- x: "line-md/twitter-x-alt",
1450
+ x: "prime/twitter",
1451
1451
  github: "cib/github",
1452
1452
  snapchat: "cib/snapchat",
1453
1453
  discord: "cib/discord",
@@ -1426,7 +1426,7 @@ var platformIconMap = {
1426
1426
  yelp: "cib/yelp",
1427
1427
  spotify: "cib/spotify",
1428
1428
  apple: "cib/apple",
1429
- x: "line-md/twitter-x-alt",
1429
+ x: "prime/twitter",
1430
1430
  github: "cib/github",
1431
1431
  snapchat: "cib/snapchat",
1432
1432
  discord: "cib/discord",
@@ -1449,7 +1449,7 @@ var platformIconMap = {
1449
1449
  yelp: "cib/yelp",
1450
1450
  spotify: "cib/spotify",
1451
1451
  apple: "cib/apple",
1452
- x: "line-md/twitter-x-alt",
1452
+ x: "prime/twitter",
1453
1453
  github: "cib/github",
1454
1454
  snapchat: "cib/snapchat",
1455
1455
  discord: "cib/discord",
@@ -1428,7 +1428,7 @@ var platformIconMap = {
1428
1428
  yelp: "cib/yelp",
1429
1429
  spotify: "cib/spotify",
1430
1430
  apple: "cib/apple",
1431
- x: "line-md/twitter-x-alt",
1431
+ x: "prime/twitter",
1432
1432
  github: "cib/github",
1433
1433
  snapchat: "cib/snapchat",
1434
1434
  discord: "cib/discord",
@@ -1117,7 +1117,7 @@ var platformIconMap = {
1117
1117
  yelp: "cib/yelp",
1118
1118
  spotify: "cib/spotify",
1119
1119
  apple: "cib/apple",
1120
- x: "line-md/twitter-x-alt",
1120
+ x: "prime/twitter",
1121
1121
  github: "cib/github",
1122
1122
  snapchat: "cib/snapchat",
1123
1123
  discord: "cib/discord",
@@ -1096,7 +1096,7 @@ var platformIconMap = {
1096
1096
  yelp: "cib/yelp",
1097
1097
  spotify: "cib/spotify",
1098
1098
  apple: "cib/apple",
1099
- x: "line-md/twitter-x-alt",
1099
+ x: "prime/twitter",
1100
1100
  github: "cib/github",
1101
1101
  snapchat: "cib/snapchat",
1102
1102
  discord: "cib/discord",
@@ -876,7 +876,7 @@ var platformIconMap = {
876
876
  yelp: "cib/yelp",
877
877
  spotify: "cib/spotify",
878
878
  apple: "cib/apple",
879
- x: "line-md/twitter-x-alt",
879
+ x: "prime/twitter",
880
880
  github: "cib/github",
881
881
  snapchat: "cib/snapchat",
882
882
  discord: "cib/discord",
@@ -855,7 +855,7 @@ var platformIconMap = {
855
855
  yelp: "cib/yelp",
856
856
  spotify: "cib/spotify",
857
857
  apple: "cib/apple",
858
- x: "line-md/twitter-x-alt",
858
+ x: "prime/twitter",
859
859
  github: "cib/github",
860
860
  snapchat: "cib/snapchat",
861
861
  discord: "cib/discord",
@@ -8,6 +8,7 @@ var icon = require('@page-speed/icon');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
  var img = require('@page-speed/img');
10
10
  var classVarianceAuthority = require('class-variance-authority');
11
+ var reactSlot = require('@radix-ui/react-slot');
11
12
 
12
13
  function _interopNamespace(e) {
13
14
  if (e && e.__esModule) return e;
@@ -33,36 +34,6 @@ var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
33
34
  function cn(...inputs) {
34
35
  return tailwindMerge.twMerge(clsx.clsx(inputs));
35
36
  }
36
- function getTextColor(parentBg, variant = "default", options) {
37
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
38
- if (isDark) {
39
- switch (variant) {
40
- case "default":
41
- return "text-foreground";
42
- case "muted":
43
- return "text-foreground/80";
44
- case "subtle":
45
- return "text-foreground/60";
46
- case "accent":
47
- return "text-accent-foreground";
48
- }
49
- } else {
50
- switch (variant) {
51
- case "default":
52
- return "text-foreground";
53
- case "muted":
54
- return "text-muted-foreground";
55
- case "subtle":
56
- return "text-muted-foreground/70";
57
- case "accent":
58
- return "text-primary";
59
- }
60
- }
61
- }
62
- function getAccentColor(parentBg, options) {
63
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
64
- return isDark ? "text-accent-foreground" : "text-primary";
65
- }
66
37
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
67
38
  function DynamicIcon({ apiKey, ...props }) {
68
39
  return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
@@ -584,6 +555,38 @@ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
584
555
  size: "default"
585
556
  }
586
557
  });
558
+ var badgeVariants = classVarianceAuthority.cva(
559
+ "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
560
+ {
561
+ variants: {
562
+ variant: {
563
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
564
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
565
+ destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
566
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
567
+ }
568
+ },
569
+ defaultVariants: {
570
+ variant: "default"
571
+ }
572
+ }
573
+ );
574
+ function Badge({
575
+ className,
576
+ variant,
577
+ asChild = false,
578
+ ...props
579
+ }) {
580
+ const Comp = asChild ? reactSlot.Slot : "span";
581
+ return /* @__PURE__ */ jsxRuntime.jsx(
582
+ Comp,
583
+ {
584
+ "data-slot": "badge",
585
+ className: cn(badgeVariants({ variant }), className),
586
+ ...props
587
+ }
588
+ );
589
+ }
587
590
  function normalizePhoneNumber(input) {
588
591
  const trimmed = input.trim();
589
592
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -860,6 +863,38 @@ var Pressable = React3__namespace.forwardRef(
860
863
  }
861
864
  );
862
865
  Pressable.displayName = "Pressable";
866
+ function TextInner({ as, className, children, ...props }, ref) {
867
+ const Component = as || "span";
868
+ return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: cn(className), ...props, children });
869
+ }
870
+ var Text = React3__namespace.forwardRef(TextInner);
871
+ Text.displayName = "Text";
872
+ function isContentTextItem(item) {
873
+ return item !== null && typeof item === "object" && !React3__namespace.isValidElement(item) && "_type" in item && item._type === "text";
874
+ }
875
+ var ContentGroup = React3__namespace.forwardRef(
876
+ ({ items, className, children, ...props }, ref) => {
877
+ const hasContent = items && items.length > 0;
878
+ if (!hasContent) {
879
+ return null;
880
+ }
881
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn(className), ...props, children: [
882
+ items.map((item, idx) => {
883
+ if (isContentTextItem(item)) {
884
+ const { _type, ...textProps } = item;
885
+ return /* @__PURE__ */ jsxRuntime.jsx(Text, { ...textProps }, idx);
886
+ }
887
+ const reactNode = item;
888
+ if (React3__namespace.isValidElement(reactNode)) {
889
+ return React3__namespace.cloneElement(reactNode, { key: reactNode.key ?? idx });
890
+ }
891
+ return /* @__PURE__ */ jsxRuntime.jsx(React3__namespace.Fragment, { children: reactNode }, idx);
892
+ }),
893
+ children
894
+ ] });
895
+ }
896
+ );
897
+ ContentGroup.displayName = "ContentGroup";
863
898
  var MOBILE_CLASSES = {
864
899
  "fit-left": "items-start md:items-center",
865
900
  "fit-center": "items-center",
@@ -947,56 +982,40 @@ function HeroProductShowcaseFloating({
947
982
  spacing = "xl",
948
983
  contentClassName,
949
984
  headingClassName,
985
+ headerClassName,
950
986
  descriptionClassName,
951
987
  showcaseClassName,
952
988
  optixFlowConfig
953
989
  }) {
954
990
  const renderBadge = React3.useMemo(() => {
955
991
  if (badgeSlot) return badgeSlot;
956
- return /* @__PURE__ */ jsxRuntime.jsxs(
957
- "div",
958
- {
959
- className: cn(
960
- "inline-flex w-fit items-center gap-2 rounded-full px-4 py-2 text-sm font-medium",
961
- `${getAccentColor(background)}/10`,
962
- getAccentColor(background)
963
- ),
964
- children: [
965
- badgeIcon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: badgeIcon, size: 16 }),
966
- badgeText && /* @__PURE__ */ jsxRuntime.jsx("span", { children: badgeText })
967
- ]
968
- }
969
- );
992
+ return /* @__PURE__ */ jsxRuntime.jsxs(Badge, { className: cn("px-2"), children: [
993
+ badgeIcon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: badgeIcon, size: 16 }),
994
+ badgeText && /* @__PURE__ */ jsxRuntime.jsx("span", { children: badgeText })
995
+ ] });
970
996
  }, [badgeSlot, badgeIcon, badgeText]);
971
997
  const renderFloatingStat = React3.useMemo(() => {
972
998
  if (floatingStatSlot) return floatingStatSlot;
973
999
  if (!floatingStat) return null;
974
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -top-4 -right-4 rounded-xl bg-background p-4 shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
975
- floatingStat.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-success/10", children: /* @__PURE__ */ jsxRuntime.jsx(
976
- DynamicIcon,
977
- {
978
- name: floatingStat.icon,
979
- size: 20,
980
- className: "text-success"
981
- }
982
- ) }),
983
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
984
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-2xl font-bold ", children: floatingStat.value }),
985
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-xs", getTextColor(background, "muted")), children: floatingStat.label })
1000
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -top-4 -right-4 rounded-xl bg-card text-card-foreground p-4 shadow-lg border", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
1001
+ floatingStat.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 size-10 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: floatingStat.icon }) }),
1002
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-sm", children: [
1003
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold", children: floatingStat.value }),
1004
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-normal opacity-70", children: floatingStat.label })
986
1005
  ] })
987
1006
  ] }) });
988
1007
  }, [floatingStatSlot, floatingStat]);
989
1008
  const renderUserCount = React3.useMemo(() => {
990
1009
  if (userCountSlot) return userCountSlot;
991
1010
  if (!userCount) return null;
992
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -bottom-4 -left-4 rounded-xl bg-background p-4 shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
1011
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -bottom-4 -left-4 rounded-xl bg-card text-card-foreground p-4 shadow-lg border", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
993
1012
  userCount.avatars && userCount.avatars.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex -space-x-2", children: userCount.avatars.map((avatar, idx) => /* @__PURE__ */ jsxRuntime.jsx(
994
1013
  img.Img,
995
1014
  {
996
1015
  src: avatar.src,
997
1016
  alt: avatar.alt,
998
1017
  className: cn(
999
- "h-8 w-8 rounded-full border-2 border-background object-cover",
1018
+ "size-8 rounded-full border-2 border-background object-cover",
1000
1019
  avatar.className
1001
1020
  ),
1002
1021
  optixFlowConfig
@@ -1004,8 +1023,8 @@ function HeroProductShowcaseFloating({
1004
1023
  idx
1005
1024
  )) }),
1006
1025
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-sm", children: [
1007
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold ", children: userCount.count }),
1008
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: getTextColor(background, "muted"), children: userCount.label })
1026
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold", children: userCount.count }),
1027
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-normal opacity-70", children: userCount.label })
1009
1028
  ] })
1010
1029
  ] }) });
1011
1030
  }, [userCountSlot, userCount, optixFlowConfig]);
@@ -1013,7 +1032,7 @@ function HeroProductShowcaseFloating({
1013
1032
  if (productImageSlot) return productImageSlot;
1014
1033
  if (!productImage) return null;
1015
1034
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("order-1", showcaseClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
1016
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-4/3 overflow-hidden rounded-2xl bg-linear-to-br from-primary/20 to-purple-500/20 p-8", children: /* @__PURE__ */ jsxRuntime.jsx(
1035
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-square overflow-hidden rounded-2xl bg-linear-to-br from-primary/20 to-primary/80 p-8", children: /* @__PURE__ */ jsxRuntime.jsx(
1017
1036
  img.Img,
1018
1037
  {
1019
1038
  src: productImage.src,
@@ -1036,6 +1055,37 @@ function HeroProductShowcaseFloating({
1036
1055
  renderFloatingStat,
1037
1056
  renderUserCount
1038
1057
  ]);
1058
+ const contentItems = React3.useMemo(() => {
1059
+ const items = [];
1060
+ if (heading) {
1061
+ if (typeof heading === "string") {
1062
+ items.push({
1063
+ _type: "text",
1064
+ as: "h2",
1065
+ className: cn(
1066
+ "text-2xl font-semibold md:text-3xl lg:text-4xl",
1067
+ headingClassName
1068
+ ),
1069
+ children: heading
1070
+ });
1071
+ } else {
1072
+ items.push(heading);
1073
+ }
1074
+ }
1075
+ if (description) {
1076
+ if (typeof description === "string") {
1077
+ items.push({
1078
+ _type: "text",
1079
+ as: "p",
1080
+ className: cn("text-lg opacity-70", descriptionClassName),
1081
+ children: description
1082
+ });
1083
+ } else {
1084
+ items.push(description);
1085
+ }
1086
+ }
1087
+ return items;
1088
+ }, [heading, headingClassName, description, descriptionClassName]);
1039
1089
  return /* @__PURE__ */ jsxRuntime.jsx(
1040
1090
  Section,
1041
1091
  {
@@ -1043,42 +1093,22 @@ function HeroProductShowcaseFloating({
1043
1093
  spacing,
1044
1094
  pattern,
1045
1095
  patternOpacity,
1046
- className: cn(className),
1096
+ className,
1047
1097
  containerClassName,
1048
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-10 md:pt-0", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 lg:grid-cols-2 lg:gap-20", children: [
1098
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-12 grid-cols-1 md:grid-cols-2 lg:gap-20", children: [
1049
1099
  renderProductShowcase,
1050
1100
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-8 order-2", contentClassName), children: [
1051
1101
  renderBadge,
1052
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1053
- "h1",
1054
- {
1055
- className: cn(
1056
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl",
1057
- headingClassName
1058
- ),
1059
- children: heading
1060
- }
1061
- ) : /* @__PURE__ */ jsxRuntime.jsx(
1062
- "h1",
1063
- {
1064
- className: cn(
1065
- "text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl",
1066
- headingClassName
1067
- ),
1068
- children: heading
1069
- }
1070
- )),
1071
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1072
- "p",
1102
+ /* @__PURE__ */ jsxRuntime.jsx(
1103
+ ContentGroup,
1073
1104
  {
1105
+ items: contentItems,
1074
1106
  className: cn(
1075
- "text-lg",
1076
- getTextColor(background, "muted"),
1077
- descriptionClassName
1078
- ),
1079
- children: description
1107
+ "text-left text-balance space-y-0 md:space-y-2",
1108
+ headerClassName
1109
+ )
1080
1110
  }
1081
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
1111
+ ),
1082
1112
  /* @__PURE__ */ jsxRuntime.jsx(
1083
1113
  BlockActions,
1084
1114
  {
@@ -123,6 +123,10 @@ interface HeroProductShowcaseFloatingProps {
123
123
  * Additional CSS classes for the heading
124
124
  */
125
125
  headingClassName?: string;
126
+ /**
127
+ * Additional CSS classes for the header wrapper
128
+ */
129
+ headerClassName?: string;
126
130
  /**
127
131
  * Additional CSS classes for the description
128
132
  */
@@ -140,6 +144,6 @@ interface HeroProductShowcaseFloatingProps {
140
144
  */
141
145
  actionsClassName?: string;
142
146
  }
143
- declare function HeroProductShowcaseFloating({ badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, productImage, productImageSlot, floatingStat, floatingStatSlot, userCount, userCountSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, showcaseClassName, optixFlowConfig, }: HeroProductShowcaseFloatingProps): React.JSX.Element;
147
+ declare function HeroProductShowcaseFloating({ badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, productImage, productImageSlot, floatingStat, floatingStatSlot, userCount, userCountSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, headerClassName, descriptionClassName, showcaseClassName, optixFlowConfig, }: HeroProductShowcaseFloatingProps): React.JSX.Element;
144
148
 
145
149
  export { HeroProductShowcaseFloating, type HeroProductShowcaseFloatingProps };
@@ -123,6 +123,10 @@ interface HeroProductShowcaseFloatingProps {
123
123
  * Additional CSS classes for the heading
124
124
  */
125
125
  headingClassName?: string;
126
+ /**
127
+ * Additional CSS classes for the header wrapper
128
+ */
129
+ headerClassName?: string;
126
130
  /**
127
131
  * Additional CSS classes for the description
128
132
  */
@@ -140,6 +144,6 @@ interface HeroProductShowcaseFloatingProps {
140
144
  */
141
145
  actionsClassName?: string;
142
146
  }
143
- declare function HeroProductShowcaseFloating({ badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, productImage, productImageSlot, floatingStat, floatingStatSlot, userCount, userCountSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, descriptionClassName, showcaseClassName, optixFlowConfig, }: HeroProductShowcaseFloatingProps): React.JSX.Element;
147
+ declare function HeroProductShowcaseFloating({ badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, productImage, productImageSlot, floatingStat, floatingStatSlot, userCount, userCountSlot, background, pattern, patternOpacity, className, containerClassName, spacing, contentClassName, headingClassName, headerClassName, descriptionClassName, showcaseClassName, optixFlowConfig, }: HeroProductShowcaseFloatingProps): React.JSX.Element;
144
148
 
145
149
  export { HeroProductShowcaseFloating, type HeroProductShowcaseFloatingProps };