@treely/strapi-slices 7.1.0 → 7.1.2

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.
@@ -5376,35 +5376,39 @@ var CarouselInnerContainer = /*#__PURE__*/styled(motion.div)(_templateObject ||
5376
5376
  });
5377
5377
  var LogoGrid = /*#__PURE__*/styled(motion.div)(_templateObject2 || (_templateObject2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--boemly-space-6);\n\n @media screen and (max-width: ", ") {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: var(--boemly-space-6);\n }\n"])), BREAKPOINT_MD);
5378
5378
 
5379
- var CarouselMarqueeBanner = function CarouselMarqueeBanner(_ref) {
5379
+ // Separate component containing the actual logic
5380
+ var CarouselMarqueeBannerContent = function CarouselMarqueeBannerContent(_ref) {
5380
5381
  var slice = _ref.slice;
5382
+ var _useToken = useToken('colors', ['primary.50']),
5383
+ primary50 = _useToken[0];
5381
5384
  var _useWindowSize = useWindowSize(),
5382
5385
  windowWidth = _useWindowSize.width;
5383
- var shouldDuplicateLogos = slice.logos.length < 5;
5386
+ var hasEnoughLogosForLoop = slice.logos.length >= 5;
5384
5387
  var LOOP_ARRAY_LENGTH = windowWidth > 2000 ? 5 : 4;
5385
5388
  // Duplicate Logos to create a full loop
5386
- var logosToRender = shouldDuplicateLogos ? slice.logos : Array.from({
5389
+ var logosToRender = hasEnoughLogosForLoop ? Array.from({
5387
5390
  length: LOOP_ARRAY_LENGTH
5388
5391
  }, function () {
5389
5392
  return slice.logos;
5390
- }).flat();
5393
+ }).flat() : slice.logos;
5391
5394
  var _useMediaQuery = useMediaQuery(BREAKPOINT_MD_QUERY),
5392
5395
  isMobile = _useMediaQuery[0];
5396
+ // Carousel setup
5393
5397
  var _useEmblaCarousel = useEmblaCarousel({
5394
- loop: shouldDuplicateLogos ? false : true,
5398
+ loop: hasEnoughLogosForLoop,
5395
5399
  align: 'start',
5396
5400
  containScroll: 'trimSnaps',
5397
5401
  dragFree: true
5398
- }, shouldDuplicateLogos ? [] : [AutoScroll({
5402
+ }, hasEnoughLogosForLoop ? [AutoScroll({
5399
5403
  playOnInit: true,
5400
5404
  speed: isMobile ? 0.5 : 1,
5401
5405
  stopOnInteraction: false,
5402
5406
  stopOnMouseEnter: false,
5403
5407
  stopOnFocusIn: false
5404
- })]),
5408
+ })] : []),
5405
5409
  emblaRef = _useEmblaCarousel[0];
5406
5410
  var renderLogos = function renderLogos() {
5407
- if (slice.logos.length < 5) {
5411
+ if (!hasEnoughLogosForLoop) {
5408
5412
  return React.createElement(LogoGrid, null, slice.logos.map(function (logo, index) {
5409
5413
  return React.createElement(Box, {
5410
5414
  key: logo.id + "-" + index,
@@ -5419,15 +5423,15 @@ var CarouselMarqueeBanner = function CarouselMarqueeBanner(_ref) {
5419
5423
  }, React.createElement(Box, {
5420
5424
  position: "relative",
5421
5425
  maxHeight: "xl",
5422
- height: "calc(" + (isMobile ? 'var(--boemly-sizes-16)' : 'var(--boemly-sizes-36)') + " / " + getClosestRatio(logo.img.img.data.attributes.width, logo.img.img.data.attributes.height) + ")",
5426
+ height: "calc(" + (isMobile ? 'var(--boemly-sizes-16)' : 'var(--boemly-sizes-36)') + " / " + getClosestRatio(logo.img.data.attributes.width, logo.img.data.attributes.height) + ")",
5423
5427
  width: isMobile ? '16' : '36',
5424
5428
  borderRadius: "xl"
5425
5429
  }, React.createElement(Image, {
5426
- src: strapiMediaUrl(logo.img.img, 'large'),
5427
- alt: logo.img.alt,
5430
+ src: strapiMediaUrl(logo.img, 'large'),
5431
+ alt: logo.alt,
5428
5432
  fill: true,
5429
5433
  style: {
5430
- objectFit: logo.img.objectFit || 'contain',
5434
+ objectFit: logo.objectFit || 'contain',
5431
5435
  borderRadius: 'var(--boemly-radii-xl)'
5432
5436
  }
5433
5437
  }))));
@@ -5454,40 +5458,49 @@ var CarouselMarqueeBanner = function CarouselMarqueeBanner(_ref) {
5454
5458
  }, React.createElement(Box, {
5455
5459
  position: "relative",
5456
5460
  maxHeight: "xl",
5457
- height: "calc(" + (isMobile ? 'var(--boemly-sizes-16)' : 'var(--boemly-sizes-36)') + " / " + getClosestRatio(logo.img.img.data.attributes.width, logo.img.img.data.attributes.height) + ")",
5461
+ height: "calc(" + (isMobile ? 'var(--boemly-sizes-16)' : 'var(--boemly-sizes-36)') + " / " + getClosestRatio(logo.img.data.attributes.width, logo.img.data.attributes.height) + ")",
5458
5462
  width: isMobile ? '16' : '36',
5459
5463
  borderRadius: "xl"
5460
5464
  }, React.createElement(Image, {
5461
- src: strapiMediaUrl(logo.img.img, 'large'),
5462
- alt: logo.img.alt,
5465
+ src: strapiMediaUrl(logo.img, 'large'),
5466
+ alt: logo.alt,
5463
5467
  fill: true,
5464
5468
  style: {
5465
- objectFit: logo.img.objectFit || 'contain',
5469
+ objectFit: logo.objectFit || 'contain',
5466
5470
  borderRadius: 'var(--boemly-radii-xl)'
5467
5471
  }
5468
5472
  }))));
5469
5473
  })));
5470
5474
  };
5471
- return React.createElement(DefaultSectionContainer, null, React.createElement(Box, {
5472
- maxWidth: "full",
5473
- margin: "auto",
5474
- display: "flex",
5475
- flexDirection: "column",
5476
- justifyContent: "center",
5477
- alignItems: "center",
5478
- height: "2xs",
5479
- backgroundColor: "gray.50",
5480
- padding: "42px 0 56px"
5481
- }, slice.title ? React.createElement(React.Fragment, null, React.createElement(Flex, {
5475
+ return React.createElement(DefaultSectionContainer, {
5476
+ backgroundColor: primary50
5477
+ }, React.createElement(React.Fragment, null, slice.title ? React.createElement(React.Fragment, null, React.createElement(Flex, {
5482
5478
  alignItems: "center",
5483
5479
  flexDirection: "column"
5484
5480
  }, React.createElement(Heading, {
5485
5481
  size: "md",
5486
5482
  fontWeight: "500"
5487
5483
  }, slice.title)), React.createElement(Spacer, {
5488
- height: "12"
5484
+ height: "12",
5485
+ minHeight: "12"
5489
5486
  })) : null, renderLogos()));
5490
5487
  };
5488
+ // Lazy-rendering the child component after client-side hydration
5489
+ var CarouselMarqueeBanner = function CarouselMarqueeBanner(_ref2) {
5490
+ var slice = _ref2.slice;
5491
+ var _useState = useState(false),
5492
+ showChild = _useState[0],
5493
+ setShowChild = _useState[1];
5494
+ useEffect(function () {
5495
+ setShowChild(true); // Hydrate the component after the client-side is ready
5496
+ }, []);
5497
+ if (!showChild) {
5498
+ return React.createElement("div", null);
5499
+ }
5500
+ return React.createElement(CarouselMarqueeBannerContent, {
5501
+ slice: slice
5502
+ });
5503
+ };
5491
5504
 
5492
5505
  var Timeline = function Timeline(_ref) {
5493
5506
  var slice = _ref.slice;