@opensite/ui 3.3.7 → 3.3.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 (173) hide show
  1. package/dist/about-culture-tabs.cjs +14 -3
  2. package/dist/about-culture-tabs.js +14 -3
  3. package/dist/about-developer-profile.cjs +14 -3
  4. package/dist/about-developer-profile.js +14 -3
  5. package/dist/about-developer-story.cjs +13 -2
  6. package/dist/about-developer-story.js +14 -3
  7. package/dist/about-expandable-values.cjs +14 -3
  8. package/dist/about-expandable-values.js +14 -3
  9. package/dist/about-mission-dual-image.cjs +13 -2
  10. package/dist/about-mission-dual-image.js +14 -3
  11. package/dist/about-network-spotlight.cjs +13 -2
  12. package/dist/about-network-spotlight.js +14 -3
  13. package/dist/about-story-expertise.cjs +14 -3
  14. package/dist/about-story-expertise.js +14 -3
  15. package/dist/about-streamline-team.cjs +14 -3
  16. package/dist/about-streamline-team.js +14 -3
  17. package/dist/carousel-feature-badge.cjs +13 -2
  18. package/dist/carousel-feature-badge.js +14 -3
  19. package/dist/carousel-image-hero.cjs +13 -2
  20. package/dist/carousel-image-hero.js +14 -3
  21. package/dist/carousel-portfolio-hero.cjs +13 -2
  22. package/dist/carousel-portfolio-hero.js +14 -3
  23. package/dist/community-initiatives.cjs +13 -2
  24. package/dist/community-initiatives.js +14 -3
  25. package/dist/components.cjs +13 -2
  26. package/dist/components.js +13 -2
  27. package/dist/cta-feature-checklist.cjs +13 -2
  28. package/dist/cta-feature-checklist.js +14 -3
  29. package/dist/cta-video-background-hero.cjs +9 -0
  30. package/dist/cta-video-background-hero.js +9 -0
  31. package/dist/faq-numbered-grid.cjs +13 -2
  32. package/dist/faq-numbered-grid.js +14 -3
  33. package/dist/hero-ad-campaign-expert.cjs +13 -2
  34. package/dist/hero-ad-campaign-expert.js +14 -3
  35. package/dist/hero-adaptable-product-grid.cjs +13 -2
  36. package/dist/hero-adaptable-product-grid.js +14 -3
  37. package/dist/hero-agency-animated-images.cjs +13 -2
  38. package/dist/hero-agency-animated-images.js +14 -3
  39. package/dist/hero-ai-powered-carousel.cjs +13 -2
  40. package/dist/hero-ai-powered-carousel.js +14 -3
  41. package/dist/hero-announcement-badge.cjs +13 -2
  42. package/dist/hero-announcement-badge.js +14 -3
  43. package/dist/hero-badge-image-split.cjs +13 -2
  44. package/dist/hero-badge-image-split.js +14 -3
  45. package/dist/hero-badge-shadow-overlay.cjs +13 -2
  46. package/dist/hero-badge-shadow-overlay.js +14 -3
  47. package/dist/hero-business-carousel-dots.cjs +13 -2
  48. package/dist/hero-business-carousel-dots.js +14 -3
  49. package/dist/hero-business-operations-mosaic.cjs +13 -2
  50. package/dist/hero-business-operations-mosaic.js +14 -3
  51. package/dist/hero-centered-gradient-cta.cjs +13 -2
  52. package/dist/hero-centered-gradient-cta.js +14 -3
  53. package/dist/hero-community-survey-cta.cjs +13 -2
  54. package/dist/hero-community-survey-cta.js +14 -3
  55. package/dist/hero-conversation-intelligence.cjs +13 -2
  56. package/dist/hero-conversation-intelligence.js +14 -3
  57. package/dist/hero-conversion-video-play.cjs +9 -0
  58. package/dist/hero-conversion-video-play.js +9 -0
  59. package/dist/hero-creative-studio-stacked.cjs +22 -2
  60. package/dist/hero-creative-studio-stacked.js +23 -3
  61. package/dist/hero-crm-streamlined.cjs +13 -2
  62. package/dist/hero-crm-streamlined.js +14 -3
  63. package/dist/hero-customer-support-layered.cjs +13 -2
  64. package/dist/hero-customer-support-layered.js +14 -3
  65. package/dist/hero-design-carousel-portfolio.cjs +13 -2
  66. package/dist/hero-design-carousel-portfolio.js +14 -3
  67. package/dist/hero-design-showcase-logos.cjs +13 -2
  68. package/dist/hero-design-showcase-logos.js +14 -3
  69. package/dist/hero-design-system-3d.cjs +13 -2
  70. package/dist/hero-design-system-3d.js +14 -3
  71. package/dist/hero-developer-tools-code.cjs +13 -2
  72. package/dist/hero-developer-tools-code.js +14 -3
  73. package/dist/hero-digital-agency-fullscreen.cjs +13 -2
  74. package/dist/hero-digital-agency-fullscreen.js +14 -3
  75. package/dist/hero-ecommerce-product-showcase.cjs +14 -3
  76. package/dist/hero-ecommerce-product-showcase.js +14 -3
  77. package/dist/hero-enterprise-security.cjs +13 -2
  78. package/dist/hero-enterprise-security.js +14 -3
  79. package/dist/hero-event-registration.cjs +13 -2
  80. package/dist/hero-event-registration.js +14 -3
  81. package/dist/hero-feature-cards-grid.cjs +13 -2
  82. package/dist/hero-feature-cards-grid.js +14 -3
  83. package/dist/hero-floating-images.cjs +18 -10
  84. package/dist/hero-floating-images.js +19 -11
  85. package/dist/hero-fullscreen-background-image.cjs +13 -2
  86. package/dist/hero-fullscreen-background-image.js +14 -3
  87. package/dist/hero-gradient-avatars-rating.cjs +13 -2
  88. package/dist/hero-gradient-avatars-rating.js +14 -3
  89. package/dist/hero-gradient-client-focused.cjs +13 -2
  90. package/dist/hero-gradient-client-focused.js +14 -3
  91. package/dist/hero-grid-pattern-solutions.cjs +13 -2
  92. package/dist/hero-grid-pattern-solutions.js +14 -3
  93. package/dist/hero-hiring-animated-text.cjs +13 -2
  94. package/dist/hero-hiring-animated-text.js +14 -3
  95. package/dist/hero-image-left-content.cjs +13 -2
  96. package/dist/hero-image-left-content.js +14 -3
  97. package/dist/hero-image-slider.cjs +13 -2
  98. package/dist/hero-image-slider.js +14 -3
  99. package/dist/hero-innovation-image-grid.cjs +13 -2
  100. package/dist/hero-innovation-image-grid.js +14 -3
  101. package/dist/hero-mental-health-team.cjs +13 -2
  102. package/dist/hero-mental-health-team.js +14 -3
  103. package/dist/hero-mentorship-video-split.cjs +9 -0
  104. package/dist/hero-mentorship-video-split.js +9 -0
  105. package/dist/hero-minimal-centered-dark.cjs +14 -3
  106. package/dist/hero-minimal-centered-dark.js +14 -3
  107. package/dist/hero-overlay-cta-grid.cjs +13 -2
  108. package/dist/hero-overlay-cta-grid.js +14 -3
  109. package/dist/hero-presentation-platform-video.cjs +13 -2
  110. package/dist/hero-presentation-platform-video.js +14 -3
  111. package/dist/hero-product-showcase-floating.cjs +14 -3
  112. package/dist/hero-product-showcase-floating.js +14 -3
  113. package/dist/hero-shared-inbox-layered.cjs +13 -2
  114. package/dist/hero-shared-inbox-layered.js +14 -3
  115. package/dist/hero-simple-centered-image.cjs +13 -2
  116. package/dist/hero-simple-centered-image.js +14 -3
  117. package/dist/hero-software-growth-video-dialog.cjs +22 -2
  118. package/dist/hero-software-growth-video-dialog.js +23 -3
  119. package/dist/hero-spiral-pattern-cards.cjs +14 -3
  120. package/dist/hero-spiral-pattern-cards.js +14 -3
  121. package/dist/hero-split-geometric-shapes.cjs +13 -2
  122. package/dist/hero-split-geometric-shapes.js +14 -3
  123. package/dist/hero-startup-launch-cta.cjs +14 -3
  124. package/dist/hero-startup-launch-cta.js +14 -3
  125. package/dist/hero-stats-social-proof.cjs +14 -3
  126. package/dist/hero-stats-social-proof.js +14 -3
  127. package/dist/hero-task-timer-animated.cjs +13 -2
  128. package/dist/hero-task-timer-animated.js +14 -3
  129. package/dist/hero-testimonial-image-grid.cjs +13 -2
  130. package/dist/hero-testimonial-image-grid.js +14 -3
  131. package/dist/hero-therapy-testimonial-grid.cjs +13 -2
  132. package/dist/hero-therapy-testimonial-grid.js +14 -3
  133. package/dist/hero-ui-library-showcase.cjs +13 -2
  134. package/dist/hero-ui-library-showcase.js +14 -3
  135. package/dist/hero-video-background-dark.cjs +14 -3
  136. package/dist/hero-video-background-dark.js +14 -3
  137. package/dist/hero-video-dialog-gradient.cjs +22 -2
  138. package/dist/hero-video-dialog-gradient.js +23 -3
  139. package/dist/hero-video-overlay-stars.cjs +13 -2
  140. package/dist/hero-video-overlay-stars.js +14 -3
  141. package/dist/hero-welcome-asymmetric-images.cjs +13 -2
  142. package/dist/hero-welcome-asymmetric-images.js +14 -3
  143. package/dist/index.cjs +13 -2
  144. package/dist/index.js +13 -2
  145. package/dist/link-page-bento-layout.cjs +2 -2
  146. package/dist/link-page-bento-layout.js +2 -2
  147. package/dist/link-page-grid-cards.cjs +2 -2
  148. package/dist/link-page-grid-cards.js +2 -2
  149. package/dist/link-page-minimal-profile.cjs +2 -2
  150. package/dist/link-page-minimal-profile.js +2 -2
  151. package/dist/link-page-newsletter-social.cjs +2 -2
  152. package/dist/link-page-newsletter-social.js +2 -2
  153. package/dist/link-tree-block.cjs +2 -2
  154. package/dist/link-tree-block.js +2 -2
  155. package/dist/process-sticky-steps.cjs +29 -9
  156. package/dist/process-sticky-steps.js +30 -10
  157. package/dist/registry.cjs +99 -28
  158. package/dist/registry.js +99 -28
  159. package/dist/stats-growth-timeline.cjs +13 -2
  160. package/dist/stats-growth-timeline.js +14 -3
  161. package/dist/testimonials-grid-add-review.cjs +13 -2
  162. package/dist/testimonials-grid-add-review.js +14 -3
  163. package/dist/testimonials-masonry-grid.cjs +13 -2
  164. package/dist/testimonials-masonry-grid.js +14 -3
  165. package/dist/testimonials-simple-grid.cjs +13 -2
  166. package/dist/testimonials-simple-grid.js +14 -3
  167. package/dist/testimonials-stats-header.cjs +13 -2
  168. package/dist/testimonials-stats-header.js +14 -3
  169. package/dist/testimonials-twitter-cards.cjs +13 -2
  170. package/dist/testimonials-twitter-cards.js +14 -3
  171. package/dist/testimonials-wall-compact.cjs +13 -2
  172. package/dist/testimonials-wall-compact.js +14 -3
  173. package/package.json +2 -2
package/dist/registry.cjs CHANGED
@@ -7,11 +7,11 @@ var jsxRuntime = require('react/jsx-runtime');
7
7
  var img = require('@page-speed/img');
8
8
  var react = require('motion/react');
9
9
  var AspectRatioPrimitive = require('@radix-ui/react-aspect-ratio');
10
+ var pressable = require('@page-speed/pressable');
10
11
  var reactSlot = require('@radix-ui/react-slot');
11
12
  var classVarianceAuthority = require('class-variance-authority');
12
13
  var PopoverPrimitive = require('@radix-ui/react-popover');
13
14
  var icon = require('@page-speed/icon');
14
- var pressable = require('@page-speed/pressable');
15
15
  var usePlatformFromUrl = require('@opensite/hooks/usePlatformFromUrl');
16
16
  var TabsPrimitive = require('@radix-ui/react-tabs');
17
17
  var integration = require('@page-speed/forms/integration');
@@ -1758,16 +1758,27 @@ function ActionComponent({ action }) {
1758
1758
  children,
1759
1759
  href,
1760
1760
  onClick,
1761
+ asButton,
1762
+ variant,
1763
+ size,
1761
1764
  className: actionClassName,
1762
1765
  ...pressableProps
1763
1766
  } = action;
1767
+ const shouldStyleAsButton = asButton ?? true;
1768
+ const resolvedVariant = shouldStyleAsButton ? variant ?? "default" : void 0;
1769
+ const resolvedSize = shouldStyleAsButton ? size ?? "default" : void 0;
1764
1770
  return /* @__PURE__ */ jsxRuntime.jsx(
1765
1771
  pressable.Pressable,
1766
1772
  {
1767
1773
  href,
1768
1774
  onClick,
1769
- asButton: action.asButton ?? true,
1770
- className: actionClassName,
1775
+ asButton: shouldStyleAsButton,
1776
+ variant: resolvedVariant,
1777
+ size: resolvedSize,
1778
+ className: cn(
1779
+ shouldStyleAsButton && pressable.buttonVariants({ variant: resolvedVariant, size: resolvedSize }),
1780
+ actionClassName
1781
+ ),
1771
1782
  ...pressableProps,
1772
1783
  children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1773
1784
  icon,
@@ -12576,10 +12587,19 @@ function CtaVideoBackgroundHero({
12576
12587
  const [skinClasses, setSkinClasses] = React30.useState(null);
12577
12588
  const [skinStyle, setSkinStyle] = React30.useState(null);
12578
12589
  React30.useEffect(() => {
12590
+ let isMounted = true;
12579
12591
  skins.loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
12592
+ if (!isMounted) return;
12580
12593
  setSkinClasses(skins.resolveVideoClasses(skin));
12581
12594
  setSkinStyle(skins.getSkinStyleObject(skin));
12595
+ }).catch(() => {
12596
+ if (!isMounted) return;
12597
+ setSkinClasses(null);
12598
+ setSkinStyle(null);
12582
12599
  });
12600
+ return () => {
12601
+ isMounted = false;
12602
+ };
12583
12603
  }, []);
12584
12604
  const handleOpenModal = () => {
12585
12605
  setIsModalOpen(true);
@@ -49674,7 +49694,7 @@ function HeroFloatingImages({
49674
49694
  "absolute inset-0 flex items-center justify-center opacity-0 transition-opacity group-hover:opacity-100",
49675
49695
  zoomIndicatorClassName
49676
49696
  ),
49677
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-12 w-12 items-center justify-center rounded-full bg-background/90 shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: zoomIconName, size: 20 }) })
49697
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-12 w-12 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: zoomIconName, size: 20 }) })
49678
49698
  }
49679
49699
  ),
49680
49700
  [zoomIconName, zoomIndicatorClassName]
@@ -49819,7 +49839,7 @@ function HeroFloatingImages({
49819
49839
  ),
49820
49840
  children: [
49821
49841
  hasContent ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col justify-center", contentClassName), children: [
49822
- (badge || badgeIcon) && /* @__PURE__ */ jsxRuntime.jsxs(
49842
+ badge && /* @__PURE__ */ jsxRuntime.jsxs(
49823
49843
  Badge,
49824
49844
  {
49825
49845
  variant: "secondary",
@@ -49839,17 +49859,14 @@ function HeroFloatingImages({
49839
49859
  ),
49840
49860
  children: heading
49841
49861
  }
49842
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
49862
+ ) : heading),
49843
49863
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
49844
49864
  "p",
49845
49865
  {
49846
- className: cn(
49847
- "mb-8 max-w-lg text-lg text-muted-foreground",
49848
- descriptionClassName
49849
- ),
49866
+ className: cn("mb-8 max-w-lg text-lg", descriptionClassName),
49850
49867
  children: description
49851
49868
  }
49852
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
49869
+ ) : description),
49853
49870
  /* @__PURE__ */ jsxRuntime.jsx(
49854
49871
  BlockActions,
49855
49872
  {
@@ -55138,10 +55155,19 @@ function HeroSoftwareGrowthVideoDialog({
55138
55155
  const [skinClasses, setSkinClasses] = React30.useState(null);
55139
55156
  const [skinStyle, setSkinStyle] = React30.useState(null);
55140
55157
  React30.useEffect(() => {
55158
+ let isMounted = true;
55141
55159
  skins.loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
55160
+ if (!isMounted) return;
55142
55161
  setSkinClasses(skins.resolveVideoClasses(skin));
55143
55162
  setSkinStyle(skins.getSkinStyleObject(skin));
55163
+ }).catch(() => {
55164
+ if (!isMounted) return;
55165
+ setSkinClasses(null);
55166
+ setSkinStyle(null);
55144
55167
  });
55168
+ return () => {
55169
+ isMounted = false;
55170
+ };
55145
55171
  }, []);
55146
55172
  const handleVideoClick = () => {
55147
55173
  if (onVideoClick) {
@@ -55320,10 +55346,19 @@ function HeroConversionVideoPlay({
55320
55346
  const [skinClasses, setSkinClasses] = React30.useState(null);
55321
55347
  const [skinStyle, setSkinStyle] = React30.useState(null);
55322
55348
  React30.useEffect(() => {
55349
+ let isMounted = true;
55323
55350
  skins.loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
55351
+ if (!isMounted) return;
55324
55352
  setSkinClasses(skins.resolveVideoClasses(skin));
55325
55353
  setSkinStyle(skins.getSkinStyleObject(skin));
55354
+ }).catch(() => {
55355
+ if (!isMounted) return;
55356
+ setSkinClasses(null);
55357
+ setSkinStyle(null);
55326
55358
  });
55359
+ return () => {
55360
+ isMounted = false;
55361
+ };
55327
55362
  }, []);
55328
55363
  const renderActions = React30.useMemo(() => {
55329
55364
  if (actionsSlot) return actionsSlot;
@@ -57127,10 +57162,19 @@ function HeroVideoDialogGradient({
57127
57162
  const [skinClasses, setSkinClasses] = React30.useState(null);
57128
57163
  const [skinStyle, setSkinStyle] = React30.useState(null);
57129
57164
  React30.useEffect(() => {
57165
+ let isMounted = true;
57130
57166
  skins.loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
57167
+ if (!isMounted) return;
57131
57168
  setSkinClasses(skins.resolveVideoClasses(skin));
57132
57169
  setSkinStyle(skins.getSkinStyleObject(skin));
57170
+ }).catch(() => {
57171
+ if (!isMounted) return;
57172
+ setSkinClasses(null);
57173
+ setSkinStyle(null);
57133
57174
  });
57175
+ return () => {
57176
+ isMounted = false;
57177
+ };
57134
57178
  }, []);
57135
57179
  const handleVideoClick = () => {
57136
57180
  if (onVideoClick) {
@@ -58130,10 +58174,19 @@ function HeroMentorshipVideoSplit({
58130
58174
  const [skinClasses, setSkinClasses] = React30.useState(null);
58131
58175
  const [skinStyle, setSkinStyle] = React30.useState(null);
58132
58176
  React30.useEffect(() => {
58177
+ let isMounted = true;
58133
58178
  skins.loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
58179
+ if (!isMounted) return;
58134
58180
  setSkinClasses(skins.resolveVideoClasses(skin));
58135
58181
  setSkinStyle(skins.getSkinStyleObject(skin));
58182
+ }).catch(() => {
58183
+ if (!isMounted) return;
58184
+ setSkinClasses(null);
58185
+ setSkinStyle(null);
58136
58186
  });
58187
+ return () => {
58188
+ isMounted = false;
58189
+ };
58137
58190
  }, []);
58138
58191
  const renderAction = React30.useMemo(() => {
58139
58192
  if (actionSlot) return actionSlot;
@@ -59031,10 +59084,19 @@ function HeroCreativeStudioStacked({
59031
59084
  const [skinClasses, setSkinClasses] = React30.useState(null);
59032
59085
  const [skinStyle, setSkinStyle] = React30.useState(null);
59033
59086
  React30.useEffect(() => {
59087
+ let isMounted = true;
59034
59088
  skins.loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
59089
+ if (!isMounted) return;
59035
59090
  setSkinClasses(skins.resolveVideoClasses(skin));
59036
59091
  setSkinStyle(skins.getSkinStyleObject(skin));
59092
+ }).catch(() => {
59093
+ if (!isMounted) return;
59094
+ setSkinClasses(null);
59095
+ setSkinStyle(null);
59037
59096
  });
59097
+ return () => {
59098
+ isMounted = false;
59099
+ };
59038
59100
  }, []);
59039
59101
  const handleVideoClick = () => {
59040
59102
  if (onVideoClick) {
@@ -78261,11 +78323,11 @@ function ProcessStickySteps({
78261
78323
  const renderSteps = React30.useMemo(() => {
78262
78324
  if (stepsSlot) return stepsSlot;
78263
78325
  if (!steps?.length) return null;
78264
- return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("relative col-span-4 w-full lg:pl-22", stepsClassName), children: steps.map((step, index) => /* @__PURE__ */ jsxRuntime.jsxs(
78326
+ return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("relative w-full min-w-0", stepsClassName), children: steps.map((step, index) => /* @__PURE__ */ jsxRuntime.jsxs(
78265
78327
  "li",
78266
78328
  {
78267
78329
  className: cn(
78268
- "relative flex flex-col justify-between gap-10 border-t py-8 md:flex-row lg:py-10",
78330
+ "relative grid grid-cols-1 gap-6 border-t py-8 md:grid-cols-[auto_minmax(0,1fr)] md:gap-10 lg:py-10",
78269
78331
  stepItemClassName,
78270
78332
  step.className
78271
78333
  ),
@@ -78289,7 +78351,7 @@ function ProcessStickySteps({
78289
78351
  children: step.step ?? `0${index + 1}`
78290
78352
  }
78291
78353
  ),
78292
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
78354
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 pr-10", children: [
78293
78355
  step.title && (typeof step.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(pressable.Pressable, { href: step.href, className: "mb-4 block", children: /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-semibold tracking-tighter lg:text-3xl", children: step.title }) }) : /* @__PURE__ */ jsxRuntime.jsx(pressable.Pressable, { href: step.href, className: "mb-4 block", children: step.title })),
78294
78356
  step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: step.description }) : step.description)
78295
78357
  ] })
@@ -78312,13 +78374,22 @@ function ProcessStickySteps({
78312
78374
  "div",
78313
78375
  {
78314
78376
  className: cn(
78315
- "grid grid-cols-1 gap-5 lg:grid-cols-6 lg:gap-20",
78377
+ "grid grid-cols-1 gap-10 lg:grid-cols-[minmax(0,0.85fr)_minmax(0,1.35fr)] lg:gap-16 xl:gap-24",
78316
78378
  contentClassName
78317
78379
  ),
78318
78380
  children: [
78319
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "top-10 col-span-2 h-fit w-fit gap-3 space-y-7 py-8 lg:sticky", children: [
78320
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative w-fit text-5xl font-semibold tracking-tight lg:text-7xl", children: [
78321
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("w-fit", headingClassName), children: heading }) : heading),
78381
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "top-10 h-fit min-w-0 max-w-full space-y-7 py-8 lg:sticky", children: [
78382
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative max-w-full text-5xl font-semibold tracking-tight lg:text-6xl xl:text-7xl", children: [
78383
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
78384
+ "h1",
78385
+ {
78386
+ className: cn(
78387
+ "max-w-[12ch] text-balance break-words",
78388
+ headingClassName
78389
+ ),
78390
+ children: heading
78391
+ }
78392
+ ) : heading),
78322
78393
  /* @__PURE__ */ jsxRuntime.jsx(
78323
78394
  DynamicIcon,
78324
78395
  {
@@ -101335,7 +101406,7 @@ function LinkTreeBlock({
101335
101406
  "div",
101336
101407
  {
101337
101408
  className: cn(
101338
- "h-24 w-24 overflow-hidden rounded-full border-4 border-background bg-muted shadow-xl",
101409
+ "flex h-24 w-full max-w-72 items-center justify-center",
101339
101410
  avatarClassName
101340
101411
  ),
101341
101412
  children: resolvedAvatar && /* @__PURE__ */ jsxRuntime.jsx(
@@ -101343,7 +101414,7 @@ function LinkTreeBlock({
101343
101414
  {
101344
101415
  src: resolvedAvatar.src,
101345
101416
  alt: resolvedAvatar.alt,
101346
- className: "h-full w-full object-cover",
101417
+ className: "h-auto max-h-24 w-auto max-w-full object-contain",
101347
101418
  optixFlowConfig
101348
101419
  }
101349
101420
  )
@@ -101796,7 +101867,7 @@ function LinkPageMinimalProfile({
101796
101867
  "div",
101797
101868
  {
101798
101869
  className: cn(
101799
- "h-20 w-20 overflow-hidden rounded-full",
101870
+ "flex h-20 w-full max-w-56 items-center justify-center sm:h-24 sm:max-w-72",
101800
101871
  avatarClassName
101801
101872
  ),
101802
101873
  children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -101804,7 +101875,7 @@ function LinkPageMinimalProfile({
101804
101875
  {
101805
101876
  src: resolvedAvatar.src,
101806
101877
  alt: resolvedAvatar.alt,
101807
- className: "h-full w-full object-cover",
101878
+ className: "h-auto max-h-20 w-auto max-w-full object-contain sm:max-h-24",
101808
101879
  optixFlowConfig
101809
101880
  }
101810
101881
  )
@@ -102068,7 +102139,7 @@ function LinkPageNewsletterSocial({
102068
102139
  "div",
102069
102140
  {
102070
102141
  className: cn(
102071
- "h-24 w-24 overflow-hidden rounded-full bg-muted ring-4 ring-background shadow-lg",
102142
+ "flex h-24 w-full max-w-72 items-center justify-center",
102072
102143
  avatarClassName
102073
102144
  ),
102074
102145
  children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -102076,7 +102147,7 @@ function LinkPageNewsletterSocial({
102076
102147
  {
102077
102148
  src: resolvedAvatar.src,
102078
102149
  alt: resolvedAvatar.alt,
102079
- className: "h-full w-full object-cover",
102150
+ className: "h-auto max-h-24 w-auto max-w-full object-contain",
102080
102151
  optixFlowConfig
102081
102152
  }
102082
102153
  )
@@ -102392,7 +102463,7 @@ function LinkPageGridCards({
102392
102463
  "div",
102393
102464
  {
102394
102465
  className: cn(
102395
- "h-20 w-20 overflow-hidden rounded-2xl shadow-lg ring-2 ring-primary",
102466
+ "flex h-20 w-full max-w-56 items-center justify-center sm:h-24 sm:max-w-72",
102396
102467
  avatarClassName
102397
102468
  ),
102398
102469
  children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -102400,7 +102471,7 @@ function LinkPageGridCards({
102400
102471
  {
102401
102472
  src: resolvedAvatar.src,
102402
102473
  alt: resolvedAvatar.alt,
102403
- className: "h-full w-full object-cover",
102474
+ className: "h-auto max-h-20 w-auto max-w-full object-contain sm:max-h-24",
102404
102475
  optixFlowConfig
102405
102476
  }
102406
102477
  )
@@ -102954,7 +103025,7 @@ function LinkPageBentoLayout({
102954
103025
  "div",
102955
103026
  {
102956
103027
  className: cn(
102957
- "h-20 w-20 overflow-hidden rounded-full ring-2 ring-neutral-200",
103028
+ "flex h-20 w-full max-w-56 items-center justify-center sm:h-24 sm:max-w-72",
102958
103029
  avatarClassName
102959
103030
  ),
102960
103031
  children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -102962,7 +103033,7 @@ function LinkPageBentoLayout({
102962
103033
  {
102963
103034
  src: resolvedAvatar.src,
102964
103035
  alt: resolvedAvatar.alt,
102965
- className: "h-full w-full object-cover",
103036
+ className: "h-auto max-h-20 w-auto max-w-full object-contain sm:max-h-24",
102966
103037
  optixFlowConfig
102967
103038
  }
102968
103039
  )
package/dist/registry.js CHANGED
@@ -6,11 +6,11 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
6
  import { Img } from '@page-speed/img';
7
7
  import { motion as motion$1, AnimatePresence as AnimatePresence$1 } from 'motion/react';
8
8
  import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
9
+ import { Pressable, buttonVariants } from '@page-speed/pressable';
9
10
  import { Slot } from '@radix-ui/react-slot';
10
11
  import { cva } from 'class-variance-authority';
11
12
  import * as PopoverPrimitive from '@radix-ui/react-popover';
12
13
  import { Icon } from '@page-speed/icon';
13
- import { Pressable } from '@page-speed/pressable';
14
14
  import { usePlatformFromUrl } from '@opensite/hooks/usePlatformFromUrl';
15
15
  import * as TabsPrimitive from '@radix-ui/react-tabs';
16
16
  import { FormEngine, useFileUpload, useContactForm, DynamicFormField, submitPageSpeedForm, PageSpeedFormSubmissionError, isValidEmail } from '@page-speed/forms/integration';
@@ -1718,16 +1718,27 @@ function ActionComponent({ action }) {
1718
1718
  children,
1719
1719
  href,
1720
1720
  onClick,
1721
+ asButton,
1722
+ variant,
1723
+ size,
1721
1724
  className: actionClassName,
1722
1725
  ...pressableProps
1723
1726
  } = action;
1727
+ const shouldStyleAsButton = asButton ?? true;
1728
+ const resolvedVariant = shouldStyleAsButton ? variant ?? "default" : void 0;
1729
+ const resolvedSize = shouldStyleAsButton ? size ?? "default" : void 0;
1724
1730
  return /* @__PURE__ */ jsx(
1725
1731
  Pressable,
1726
1732
  {
1727
1733
  href,
1728
1734
  onClick,
1729
- asButton: action.asButton ?? true,
1730
- className: actionClassName,
1735
+ asButton: shouldStyleAsButton,
1736
+ variant: resolvedVariant,
1737
+ size: resolvedSize,
1738
+ className: cn(
1739
+ shouldStyleAsButton && buttonVariants({ variant: resolvedVariant, size: resolvedSize }),
1740
+ actionClassName
1741
+ ),
1731
1742
  ...pressableProps,
1732
1743
  children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
1733
1744
  icon,
@@ -12536,10 +12547,19 @@ function CtaVideoBackgroundHero({
12536
12547
  const [skinClasses, setSkinClasses] = useState(null);
12537
12548
  const [skinStyle, setSkinStyle] = useState(null);
12538
12549
  useEffect(() => {
12550
+ let isMounted = true;
12539
12551
  loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
12552
+ if (!isMounted) return;
12540
12553
  setSkinClasses(resolveVideoClasses(skin));
12541
12554
  setSkinStyle(getSkinStyleObject(skin));
12555
+ }).catch(() => {
12556
+ if (!isMounted) return;
12557
+ setSkinClasses(null);
12558
+ setSkinStyle(null);
12542
12559
  });
12560
+ return () => {
12561
+ isMounted = false;
12562
+ };
12543
12563
  }, []);
12544
12564
  const handleOpenModal = () => {
12545
12565
  setIsModalOpen(true);
@@ -49634,7 +49654,7 @@ function HeroFloatingImages({
49634
49654
  "absolute inset-0 flex items-center justify-center opacity-0 transition-opacity group-hover:opacity-100",
49635
49655
  zoomIndicatorClassName
49636
49656
  ),
49637
- children: /* @__PURE__ */ jsx("div", { className: "flex h-12 w-12 items-center justify-center rounded-full bg-background/90 shadow-lg", children: /* @__PURE__ */ jsx(DynamicIcon, { name: zoomIconName, size: 20 }) })
49657
+ children: /* @__PURE__ */ jsx("div", { className: "flex h-12 w-12 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg", children: /* @__PURE__ */ jsx(DynamicIcon, { name: zoomIconName, size: 20 }) })
49638
49658
  }
49639
49659
  ),
49640
49660
  [zoomIconName, zoomIndicatorClassName]
@@ -49779,7 +49799,7 @@ function HeroFloatingImages({
49779
49799
  ),
49780
49800
  children: [
49781
49801
  hasContent ? /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col justify-center", contentClassName), children: [
49782
- (badge || badgeIcon) && /* @__PURE__ */ jsxs(
49802
+ badge && /* @__PURE__ */ jsxs(
49783
49803
  Badge,
49784
49804
  {
49785
49805
  variant: "secondary",
@@ -49799,17 +49819,14 @@ function HeroFloatingImages({
49799
49819
  ),
49800
49820
  children: heading
49801
49821
  }
49802
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
49822
+ ) : heading),
49803
49823
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
49804
49824
  "p",
49805
49825
  {
49806
- className: cn(
49807
- "mb-8 max-w-lg text-lg text-muted-foreground",
49808
- descriptionClassName
49809
- ),
49826
+ className: cn("mb-8 max-w-lg text-lg", descriptionClassName),
49810
49827
  children: description
49811
49828
  }
49812
- ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description })),
49829
+ ) : description),
49813
49830
  /* @__PURE__ */ jsx(
49814
49831
  BlockActions,
49815
49832
  {
@@ -55098,10 +55115,19 @@ function HeroSoftwareGrowthVideoDialog({
55098
55115
  const [skinClasses, setSkinClasses] = useState(null);
55099
55116
  const [skinStyle, setSkinStyle] = useState(null);
55100
55117
  useEffect(() => {
55118
+ let isMounted = true;
55101
55119
  loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
55120
+ if (!isMounted) return;
55102
55121
  setSkinClasses(resolveVideoClasses(skin));
55103
55122
  setSkinStyle(getSkinStyleObject(skin));
55123
+ }).catch(() => {
55124
+ if (!isMounted) return;
55125
+ setSkinClasses(null);
55126
+ setSkinStyle(null);
55104
55127
  });
55128
+ return () => {
55129
+ isMounted = false;
55130
+ };
55105
55131
  }, []);
55106
55132
  const handleVideoClick = () => {
55107
55133
  if (onVideoClick) {
@@ -55280,10 +55306,19 @@ function HeroConversionVideoPlay({
55280
55306
  const [skinClasses, setSkinClasses] = useState(null);
55281
55307
  const [skinStyle, setSkinStyle] = useState(null);
55282
55308
  useEffect(() => {
55309
+ let isMounted = true;
55283
55310
  loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
55311
+ if (!isMounted) return;
55284
55312
  setSkinClasses(resolveVideoClasses(skin));
55285
55313
  setSkinStyle(getSkinStyleObject(skin));
55314
+ }).catch(() => {
55315
+ if (!isMounted) return;
55316
+ setSkinClasses(null);
55317
+ setSkinStyle(null);
55286
55318
  });
55319
+ return () => {
55320
+ isMounted = false;
55321
+ };
55287
55322
  }, []);
55288
55323
  const renderActions = useMemo(() => {
55289
55324
  if (actionsSlot) return actionsSlot;
@@ -57087,10 +57122,19 @@ function HeroVideoDialogGradient({
57087
57122
  const [skinClasses, setSkinClasses] = useState(null);
57088
57123
  const [skinStyle, setSkinStyle] = useState(null);
57089
57124
  useEffect(() => {
57125
+ let isMounted = true;
57090
57126
  loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
57127
+ if (!isMounted) return;
57091
57128
  setSkinClasses(resolveVideoClasses(skin));
57092
57129
  setSkinStyle(getSkinStyleObject(skin));
57130
+ }).catch(() => {
57131
+ if (!isMounted) return;
57132
+ setSkinClasses(null);
57133
+ setSkinStyle(null);
57093
57134
  });
57135
+ return () => {
57136
+ isMounted = false;
57137
+ };
57094
57138
  }, []);
57095
57139
  const handleVideoClick = () => {
57096
57140
  if (onVideoClick) {
@@ -58090,10 +58134,19 @@ function HeroMentorshipVideoSplit({
58090
58134
  const [skinClasses, setSkinClasses] = useState(null);
58091
58135
  const [skinStyle, setSkinStyle] = useState(null);
58092
58136
  useEffect(() => {
58137
+ let isMounted = true;
58093
58138
  loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
58139
+ if (!isMounted) return;
58094
58140
  setSkinClasses(resolveVideoClasses(skin));
58095
58141
  setSkinStyle(getSkinStyleObject(skin));
58142
+ }).catch(() => {
58143
+ if (!isMounted) return;
58144
+ setSkinClasses(null);
58145
+ setSkinStyle(null);
58096
58146
  });
58147
+ return () => {
58148
+ isMounted = false;
58149
+ };
58097
58150
  }, []);
58098
58151
  const renderAction = useMemo(() => {
58099
58152
  if (actionSlot) return actionSlot;
@@ -58991,10 +59044,19 @@ function HeroCreativeStudioStacked({
58991
59044
  const [skinClasses, setSkinClasses] = useState(null);
58992
59045
  const [skinStyle, setSkinStyle] = useState(null);
58993
59046
  useEffect(() => {
59047
+ let isMounted = true;
58994
59048
  loadSkinFromJsDelivr("0.1.2", "skins/video/base.json").then((skin) => {
59049
+ if (!isMounted) return;
58995
59050
  setSkinClasses(resolveVideoClasses(skin));
58996
59051
  setSkinStyle(getSkinStyleObject(skin));
59052
+ }).catch(() => {
59053
+ if (!isMounted) return;
59054
+ setSkinClasses(null);
59055
+ setSkinStyle(null);
58997
59056
  });
59057
+ return () => {
59058
+ isMounted = false;
59059
+ };
58998
59060
  }, []);
58999
59061
  const handleVideoClick = () => {
59000
59062
  if (onVideoClick) {
@@ -78221,11 +78283,11 @@ function ProcessStickySteps({
78221
78283
  const renderSteps = useMemo(() => {
78222
78284
  if (stepsSlot) return stepsSlot;
78223
78285
  if (!steps?.length) return null;
78224
- return /* @__PURE__ */ jsx("ul", { className: cn("relative col-span-4 w-full lg:pl-22", stepsClassName), children: steps.map((step, index) => /* @__PURE__ */ jsxs(
78286
+ return /* @__PURE__ */ jsx("ul", { className: cn("relative w-full min-w-0", stepsClassName), children: steps.map((step, index) => /* @__PURE__ */ jsxs(
78225
78287
  "li",
78226
78288
  {
78227
78289
  className: cn(
78228
- "relative flex flex-col justify-between gap-10 border-t py-8 md:flex-row lg:py-10",
78290
+ "relative grid grid-cols-1 gap-6 border-t py-8 md:grid-cols-[auto_minmax(0,1fr)] md:gap-10 lg:py-10",
78229
78291
  stepItemClassName,
78230
78292
  step.className
78231
78293
  ),
@@ -78249,7 +78311,7 @@ function ProcessStickySteps({
78249
78311
  children: step.step ?? `0${index + 1}`
78250
78312
  }
78251
78313
  ),
78252
- /* @__PURE__ */ jsxs("div", { children: [
78314
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 pr-10", children: [
78253
78315
  step.title && (typeof step.title === "string" ? /* @__PURE__ */ jsx(Pressable, { href: step.href, className: "mb-4 block", children: /* @__PURE__ */ jsx("h3", { className: "text-2xl font-semibold tracking-tighter lg:text-3xl", children: step.title }) }) : /* @__PURE__ */ jsx(Pressable, { href: step.href, className: "mb-4 block", children: step.title })),
78254
78316
  step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsx("p", { children: step.description }) : step.description)
78255
78317
  ] })
@@ -78272,13 +78334,22 @@ function ProcessStickySteps({
78272
78334
  "div",
78273
78335
  {
78274
78336
  className: cn(
78275
- "grid grid-cols-1 gap-5 lg:grid-cols-6 lg:gap-20",
78337
+ "grid grid-cols-1 gap-10 lg:grid-cols-[minmax(0,0.85fr)_minmax(0,1.35fr)] lg:gap-16 xl:gap-24",
78276
78338
  contentClassName
78277
78339
  ),
78278
78340
  children: [
78279
- /* @__PURE__ */ jsxs("div", { className: "top-10 col-span-2 h-fit w-fit gap-3 space-y-7 py-8 lg:sticky", children: [
78280
- /* @__PURE__ */ jsxs("div", { className: "relative w-fit text-5xl font-semibold tracking-tight lg:text-7xl", children: [
78281
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("w-fit", headingClassName), children: heading }) : heading),
78341
+ /* @__PURE__ */ jsxs("div", { className: "top-10 h-fit min-w-0 max-w-full space-y-7 py-8 lg:sticky", children: [
78342
+ /* @__PURE__ */ jsxs("div", { className: "relative max-w-full text-5xl font-semibold tracking-tight lg:text-6xl xl:text-7xl", children: [
78343
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
78344
+ "h1",
78345
+ {
78346
+ className: cn(
78347
+ "max-w-[12ch] text-balance break-words",
78348
+ headingClassName
78349
+ ),
78350
+ children: heading
78351
+ }
78352
+ ) : heading),
78282
78353
  /* @__PURE__ */ jsx(
78283
78354
  DynamicIcon,
78284
78355
  {
@@ -101295,7 +101366,7 @@ function LinkTreeBlock({
101295
101366
  "div",
101296
101367
  {
101297
101368
  className: cn(
101298
- "h-24 w-24 overflow-hidden rounded-full border-4 border-background bg-muted shadow-xl",
101369
+ "flex h-24 w-full max-w-72 items-center justify-center",
101299
101370
  avatarClassName
101300
101371
  ),
101301
101372
  children: resolvedAvatar && /* @__PURE__ */ jsx(
@@ -101303,7 +101374,7 @@ function LinkTreeBlock({
101303
101374
  {
101304
101375
  src: resolvedAvatar.src,
101305
101376
  alt: resolvedAvatar.alt,
101306
- className: "h-full w-full object-cover",
101377
+ className: "h-auto max-h-24 w-auto max-w-full object-contain",
101307
101378
  optixFlowConfig
101308
101379
  }
101309
101380
  )
@@ -101756,7 +101827,7 @@ function LinkPageMinimalProfile({
101756
101827
  "div",
101757
101828
  {
101758
101829
  className: cn(
101759
- "h-20 w-20 overflow-hidden rounded-full",
101830
+ "flex h-20 w-full max-w-56 items-center justify-center sm:h-24 sm:max-w-72",
101760
101831
  avatarClassName
101761
101832
  ),
101762
101833
  children: /* @__PURE__ */ jsx(
@@ -101764,7 +101835,7 @@ function LinkPageMinimalProfile({
101764
101835
  {
101765
101836
  src: resolvedAvatar.src,
101766
101837
  alt: resolvedAvatar.alt,
101767
- className: "h-full w-full object-cover",
101838
+ className: "h-auto max-h-20 w-auto max-w-full object-contain sm:max-h-24",
101768
101839
  optixFlowConfig
101769
101840
  }
101770
101841
  )
@@ -102028,7 +102099,7 @@ function LinkPageNewsletterSocial({
102028
102099
  "div",
102029
102100
  {
102030
102101
  className: cn(
102031
- "h-24 w-24 overflow-hidden rounded-full bg-muted ring-4 ring-background shadow-lg",
102102
+ "flex h-24 w-full max-w-72 items-center justify-center",
102032
102103
  avatarClassName
102033
102104
  ),
102034
102105
  children: /* @__PURE__ */ jsx(
@@ -102036,7 +102107,7 @@ function LinkPageNewsletterSocial({
102036
102107
  {
102037
102108
  src: resolvedAvatar.src,
102038
102109
  alt: resolvedAvatar.alt,
102039
- className: "h-full w-full object-cover",
102110
+ className: "h-auto max-h-24 w-auto max-w-full object-contain",
102040
102111
  optixFlowConfig
102041
102112
  }
102042
102113
  )
@@ -102352,7 +102423,7 @@ function LinkPageGridCards({
102352
102423
  "div",
102353
102424
  {
102354
102425
  className: cn(
102355
- "h-20 w-20 overflow-hidden rounded-2xl shadow-lg ring-2 ring-primary",
102426
+ "flex h-20 w-full max-w-56 items-center justify-center sm:h-24 sm:max-w-72",
102356
102427
  avatarClassName
102357
102428
  ),
102358
102429
  children: /* @__PURE__ */ jsx(
@@ -102360,7 +102431,7 @@ function LinkPageGridCards({
102360
102431
  {
102361
102432
  src: resolvedAvatar.src,
102362
102433
  alt: resolvedAvatar.alt,
102363
- className: "h-full w-full object-cover",
102434
+ className: "h-auto max-h-20 w-auto max-w-full object-contain sm:max-h-24",
102364
102435
  optixFlowConfig
102365
102436
  }
102366
102437
  )
@@ -102914,7 +102985,7 @@ function LinkPageBentoLayout({
102914
102985
  "div",
102915
102986
  {
102916
102987
  className: cn(
102917
- "h-20 w-20 overflow-hidden rounded-full ring-2 ring-neutral-200",
102988
+ "flex h-20 w-full max-w-56 items-center justify-center sm:h-24 sm:max-w-72",
102918
102989
  avatarClassName
102919
102990
  ),
102920
102991
  children: /* @__PURE__ */ jsx(
@@ -102922,7 +102993,7 @@ function LinkPageBentoLayout({
102922
102993
  {
102923
102994
  src: resolvedAvatar.src,
102924
102995
  alt: resolvedAvatar.alt,
102925
- className: "h-full w-full object-cover",
102996
+ className: "h-auto max-h-20 w-auto max-w-full object-contain sm:max-h-24",
102926
102997
  optixFlowConfig
102927
102998
  }
102928
102999
  )