@digital-b2c/coreui-kit 0.4.1 → 0.4.3

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.
package/dist/index.cjs CHANGED
@@ -1,16 +1,20 @@
1
1
  'use strict';
2
2
 
3
- var clsx3 = require('clsx');
3
+ var clsx19 = require('clsx');
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var React52 = require('react');
6
6
  var gsap = require('gsap');
7
- var ScrollTrigger = require('gsap/ScrollTrigger');
8
7
  var react = require('@gsap/react');
8
+ var ScrollTrigger = require('gsap/ScrollTrigger');
9
+ var react$1 = require('swiper/react');
10
+ var modules = require('swiper/modules');
11
+ require('swiper/css');
9
12
 
10
13
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
14
 
12
- var clsx3__default = /*#__PURE__*/_interopDefault(clsx3);
15
+ var clsx19__default = /*#__PURE__*/_interopDefault(clsx19);
13
16
  var React52__default = /*#__PURE__*/_interopDefault(React52);
17
+ var gsap__default = /*#__PURE__*/_interopDefault(gsap);
14
18
 
15
19
  var __defProp = Object.defineProperty;
16
20
  var __defProps = Object.defineProperties;
@@ -62,7 +66,7 @@ var Picture = (_a) => {
62
66
  __spreadValues({
63
67
  src: desktop.src,
64
68
  alt: desktop.alt,
65
- className: clsx3__default.default(className, Picture_module_default["image-desktop"])
69
+ className: clsx19__default.default(className, Picture_module_default["image-desktop"])
66
70
  }, rest)
67
71
  ),
68
72
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -70,7 +74,7 @@ var Picture = (_a) => {
70
74
  __spreadValues({
71
75
  src: (_b2 = mobile == null ? void 0 : mobile.src) != null ? _b2 : desktop.src,
72
76
  alt: (_c = mobile == null ? void 0 : mobile.alt) != null ? _c : desktop.alt,
73
- className: clsx3__default.default(className, Picture_module_default["image-mobile"])
77
+ className: clsx19__default.default(className, Picture_module_default["image-mobile"])
74
78
  }, rest)
75
79
  )
76
80
  ] });
@@ -384,7 +388,7 @@ var Button = (_a) => {
384
388
  ]);
385
389
  const isLink = !!href;
386
390
  const props = __spreadValues(__spreadValues({
387
- className: clsx3__default.default(
391
+ className: clsx19__default.default(
388
392
  Button_module_default.button,
389
393
  variant ? Button_module_default[variant] : null,
390
394
  { [Button_module_default.fullWidth]: !!fullWidth },
@@ -493,9 +497,7 @@ var BrandsStrip_module_default = {
493
497
  title: "BrandsStrip_module_title",
494
498
  blurred: "BrandsStrip_module_blurred",
495
499
  logos: "BrandsStrip_module_logos",
496
- marquee: "BrandsStrip_module_marquee",
497
- scrollIndividual: "BrandsStrip_module_scrollIndividual",
498
- paused: "BrandsStrip_module_paused",
500
+ marqueeGSAP: "BrandsStrip_module_marqueeGSAP",
499
501
  logo: "BrandsStrip_module_logo",
500
502
  cta: "BrandsStrip_module_cta"
501
503
  };
@@ -505,37 +507,136 @@ var BrandsStrip = ({
505
507
  title,
506
508
  logos = [],
507
509
  cta,
508
- size,
509
- animate = false
510
+ size
510
511
  }) => {
511
512
  const [show, setShow] = React52.useState(false);
513
+ const [shouldAnimate, setShouldAnimate] = React52.useState(false);
512
514
  const { is } = useViewPort_default();
513
515
  const isTabletBelow = is("tablet", "below");
514
- const shouldAnimate = title && animate;
516
+ const containerRef = React52.useRef(null);
517
+ const marqueeRef = React52.useRef(null);
518
+ const timeline = React52.useRef(null);
519
+ const horizontalLoop = (items, config) => {
520
+ const itemsArray = gsap__default.default.utils.toArray(items);
521
+ const cfg = config || {};
522
+ const tl = gsap__default.default.timeline({
523
+ repeat: cfg.repeat,
524
+ paused: cfg.paused,
525
+ defaults: { ease: "none" },
526
+ onReverseComplete: () => tl.totalTime(tl.rawTime() + tl.duration() * 100)
527
+ });
528
+ const length = itemsArray.length;
529
+ const startX = itemsArray[0].offsetLeft;
530
+ const widths = [];
531
+ const xPercents = [];
532
+ const pixelsPerSecond = (cfg.speed || 1) * 100;
533
+ const snap = cfg.snap === false ? (v) => v : gsap__default.default.utils.snap(cfg.snap || 1);
534
+ gsap__default.default.set(itemsArray, {
535
+ xPercent: (i, target) => {
536
+ const w = widths[i] = parseFloat(gsap__default.default.getProperty(target, "width", "px"));
537
+ xPercents[i] = snap(
538
+ parseFloat(gsap__default.default.getProperty(target, "x", "px")) / w * 100 + gsap__default.default.getProperty(target, "xPercent")
539
+ );
540
+ return xPercents[i];
541
+ }
542
+ });
543
+ gsap__default.default.set(itemsArray, { x: 0 });
544
+ const totalWidth = itemsArray[length - 1].offsetLeft + xPercents[length - 1] / 100 * widths[length - 1] - startX + itemsArray[length - 1].offsetWidth * gsap__default.default.getProperty(itemsArray[length - 1], "scaleX") + (parseFloat(cfg.paddingRight) || 0);
545
+ for (let i = 0; i < length; i++) {
546
+ const item = itemsArray[i];
547
+ const curX = xPercents[i] / 100 * widths[i];
548
+ const distanceToStart = item.offsetLeft - startX;
549
+ const distanceToLoop = distanceToStart + widths[i] * gsap__default.default.getProperty(item, "scaleX");
550
+ tl.to(
551
+ item,
552
+ {
553
+ xPercent: snap((curX - distanceToLoop) / widths[i] * 100),
554
+ duration: distanceToLoop / pixelsPerSecond
555
+ },
556
+ 0
557
+ ).fromTo(
558
+ item,
559
+ { xPercent: snap((curX - distanceToLoop + totalWidth) / widths[i] * 100) },
560
+ {
561
+ xPercent: xPercents[i],
562
+ duration: (totalWidth - distanceToLoop) / pixelsPerSecond,
563
+ immediateRender: false
564
+ },
565
+ distanceToLoop / pixelsPerSecond
566
+ ).add("label" + i, distanceToStart / pixelsPerSecond);
567
+ }
568
+ return tl;
569
+ };
570
+ react.useGSAP(
571
+ () => {
572
+ const refreshCalculations = () => {
573
+ if (!marqueeRef.current || !containerRef.current || logos.length === 0) return;
574
+ const items = gsap__default.default.utils.toArray(marqueeRef.current.children);
575
+ if (items.length === 0) return;
576
+ const itemWidth = items[0].clientWidth;
577
+ const calculatedTotalWidth = shouldAnimate ? itemWidth * items.length + 120 * (items.length - 1) / 2 : itemWidth * items.length + 120 * (items.length - 1);
578
+ const containerWidth = containerRef.current.clientWidth;
579
+ if (containerWidth === 0) {
580
+ requestAnimationFrame(refreshCalculations);
581
+ return;
582
+ }
583
+ if (containerWidth < calculatedTotalWidth) {
584
+ setShouldAnimate(true);
585
+ const ctx = gsap__default.default.context(() => {
586
+ const loop = horizontalLoop(items, {
587
+ repeat: -1,
588
+ speed: 1,
589
+ paddingRight: 120
590
+ });
591
+ timeline.current = loop;
592
+ }, containerRef);
593
+ return () => ctx.revert();
594
+ }
595
+ };
596
+ refreshCalculations();
597
+ },
598
+ { scope: containerRef, dependencies: [logos] }
599
+ );
600
+ const handleMouseEnter = () => {
601
+ setShow(true);
602
+ if (timeline.current) {
603
+ timeline.current.pause();
604
+ }
605
+ };
606
+ const handleMouseLeave = () => {
607
+ setShow(false);
608
+ if (timeline.current) {
609
+ timeline.current.play();
610
+ }
611
+ };
612
+ const duplicatedLogos = React52.useMemo(() => {
613
+ if (logos.length === 0) return [];
614
+ if (!shouldAnimate) return [...logos];
615
+ return [...logos, ...logos];
616
+ }, [logos]);
515
617
  return /* @__PURE__ */ jsxRuntime.jsxs(
516
618
  "div",
517
619
  {
518
- className: clsx3__default.default(
620
+ ref: containerRef,
621
+ className: clsx19__default.default(
519
622
  BrandsStrip_module_default.brandsStrip,
520
623
  BrandsStrip_module_default[variant],
521
624
  { [BrandsStrip_module_default.small]: size === "small" },
522
625
  className
523
626
  ),
524
- onMouseEnter: () => setShow(true),
525
- onMouseLeave: () => setShow(false),
526
- style: { "--total-items": logos.length },
627
+ onMouseEnter: handleMouseEnter,
628
+ onMouseLeave: handleMouseLeave,
527
629
  children: [
528
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(BrandsStrip_module_default.container, { [BrandsStrip_module_default.blurred]: show && logos.length > 1 }), children: [
529
- title && logos.length == 1 && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: clsx3__default.default("body", BrandsStrip_module_default.title), children: title }),
530
- logos.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(BrandsStrip_module_default.logos, { [BrandsStrip_module_default.marquee]: shouldAnimate }), children: logos.map((logo, index) => /* @__PURE__ */ jsxRuntime.jsx(
630
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx19__default.default(BrandsStrip_module_default.container, { [BrandsStrip_module_default.blurred]: show && logos.length > 1 }), children: [
631
+ title && logos.length === 1 && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: clsx19__default.default("body", BrandsStrip_module_default.title), children: title }),
632
+ logos.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
531
633
  "div",
532
634
  {
533
- className: clsx3__default.default(BrandsStrip_module_default.logoWrapper, { [BrandsStrip_module_default.paused]: show }),
534
- style: { "--item-index": index },
535
- children: /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: BrandsStrip_module_default.logo }, logo))
536
- },
537
- index
538
- )) })
635
+ ref: marqueeRef,
636
+ className: clsx19__default.default(BrandsStrip_module_default.logos, { [BrandsStrip_module_default.marqueeGSAP]: shouldAnimate }),
637
+ children: duplicatedLogos.map((logo, index) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: BrandsStrip_module_default.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: BrandsStrip_module_default.logo }, logo)) }, `${logo.alt}-${index}`))
638
+ }
639
+ )
539
640
  ] }),
540
641
  cta && show && logos.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
541
642
  Button,
@@ -575,34 +676,38 @@ function resolveCompoundSlots(children, slots) {
575
676
  // src/components/Card/Card.module.scss
576
677
  var Card_module_default = {
577
678
  card: "Card_module_card",
578
- logo: "Card_module_logo"
579
- };
580
- var Card = ({ className, title, subtitle, cta, icon, logo, children }) => {
581
- var _a, _b;
582
- const slots = resolveCompoundSlots(children, {
583
- title: CardTitle,
584
- subtitle: CardSubtitle
585
- });
586
- const titleNode = (_a = slots.title) != null ? _a : title;
587
- const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
588
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(Card_module_default.card, className), children: [
589
- logo ? /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: Card_module_default.logo }, logo)) : icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { type: icon, className: Card_module_default.logo }),
590
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Card_module_default.content, children: [
591
- titleNode && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "h4", children: titleNode }),
592
- subtitleNode && subtitleNode
593
- ] }),
594
- cta && /* @__PURE__ */ jsxRuntime.jsx(
595
- Button,
596
- {
597
- href: cta.url,
598
- isExternal: cta.isExternal,
599
- variant: "secondary",
600
- icon: cta.url ? "rightBlack" : void 0,
601
- children: cta.label
602
- }
603
- )
604
- ] });
605
- };
679
+ logo: "Card_module_logo",
680
+ subtitle: "Card_module_subtitle"
681
+ };
682
+ var Card = React52.forwardRef(
683
+ ({ className, title, subtitle, cta, icon, logo, children }, ref) => {
684
+ var _a, _b;
685
+ const slots = resolveCompoundSlots(children, {
686
+ title: CardTitle,
687
+ subtitle: CardSubtitle
688
+ });
689
+ const titleNode = (_a = slots.title) != null ? _a : title;
690
+ const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
691
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: clsx19__default.default(Card_module_default.card, className), children: [
692
+ (logo == null ? void 0 : logo.src) ? /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: Card_module_default.logo }, logo)) : icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { type: icon, className: Card_module_default.logo }),
693
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Card_module_default.content, children: [
694
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "h4", children: titleNode }),
695
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: Card_module_default.subtitle, children: subtitleNode })
696
+ ] }),
697
+ cta && /* @__PURE__ */ jsxRuntime.jsx(
698
+ Button,
699
+ {
700
+ href: cta.url,
701
+ isExternal: cta.isExternal,
702
+ variant: "secondary",
703
+ icon: cta.url ? "rightBlack" : void 0,
704
+ children: cta.label
705
+ }
706
+ )
707
+ ] });
708
+ }
709
+ );
710
+ Card.displayName = "Card";
606
711
 
607
712
  // src/components/Card/index.ts
608
713
  var Card2 = Object.assign(Card, {
@@ -625,10 +730,10 @@ var CountingCard = ({ className, title, count, image, children }) => {
625
730
  title: CountingCardTitle
626
731
  });
627
732
  const titleNode = (_a = slots.title) != null ? _a : title;
628
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(CountingCard_module_default["counting-card"], className), children: [
733
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx19__default.default(CountingCard_module_default["counting-card"], className), children: [
629
734
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CountingCard_module_default.content, children: [
630
735
  titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "body", children: titleNode }),
631
- count && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(CountingCard_module_default.count, "h1"), children: count })
736
+ count && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(CountingCard_module_default.count, "h1"), children: count })
632
737
  ] }),
633
738
  image && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: CountingCard_module_default.logo }, image))
634
739
  ] });
@@ -660,9 +765,9 @@ var InfoCard = ({ className, title, subtitle, icon, badge, children }) => {
660
765
  });
661
766
  const titleNode = (_a = slots.title) != null ? _a : title;
662
767
  const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
663
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(InfoCard_module_default["info-card"], { [InfoCard_module_default.hasIcon]: !!icon }, className), children: [
768
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx19__default.default(InfoCard_module_default["info-card"], { [InfoCard_module_default.hasIcon]: !!icon }, className), children: [
664
769
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: InfoCard_module_default.header, children: [
665
- icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { type: icon }) : badge ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(InfoCard_module_default.badge, "h4"), children: badge }) : null,
770
+ icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { type: icon }) : badge ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(InfoCard_module_default.badge, "h4"), children: badge }) : null,
666
771
  titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h4", children: titleNode })
667
772
  ] }),
668
773
  subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "body", children: subtitleNode })
@@ -724,7 +829,7 @@ var Pagination = ({
724
829
  setActivePage(page);
725
830
  onPageChange == null ? void 0 : onPageChange(page);
726
831
  };
727
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(Pagination_module_default.pagination, className), children: [
832
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx19__default.default(Pagination_module_default.pagination, className), children: [
728
833
  !disableArrows && /* @__PURE__ */ jsxRuntime.jsx(
729
834
  "button",
730
835
  {
@@ -741,7 +846,7 @@ var Pagination = ({
741
846
  "button",
742
847
  {
743
848
  onClick: () => goToPage(page),
744
- className: clsx3__default.default(Pagination_module_default.page, {
849
+ className: clsx19__default.default(Pagination_module_default.page, {
745
850
  [Pagination_module_default.active]: activePage === page,
746
851
  [Pagination_module_default.number]: hasNumber
747
852
  }),
@@ -768,10 +873,13 @@ var Pagination = ({
768
873
  var Container_module_default = {
769
874
  container: "Container_module_container"
770
875
  };
771
- var Container = (_a) => {
772
- var _b = _a, { children, className } = _b, props = __objRest(_b, ["children", "className"]);
773
- return /* @__PURE__ */ jsxRuntime.jsx("div", __spreadProps(__spreadValues({ className: clsx3__default.default(Container_module_default.container, className) }, props), { children }));
774
- };
876
+ var Container = React52.forwardRef(
877
+ (_a, ref) => {
878
+ var _b = _a, { children, className } = _b, props = __objRest(_b, ["children", "className"]);
879
+ return /* @__PURE__ */ jsxRuntime.jsx("div", __spreadProps(__spreadValues({ ref, className: clsx19__default.default(Container_module_default.container, className) }, props), { children }));
880
+ }
881
+ );
882
+ Container.displayName = "Container";
775
883
 
776
884
  // src/components/PracticeCard/PracticeCard.module.scss
777
885
  var PracticeCard_module_default = {
@@ -786,7 +894,7 @@ var PracticeCard_module_default = {
786
894
  };
787
895
  var PracticeCard = ({ className, title, cta, image }) => {
788
896
  const { url: href, isExternal } = cta != null ? cta : {};
789
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(PracticeCard_module_default["practice-card"], className), children: /* @__PURE__ */ jsxRuntime.jsxs(
897
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(PracticeCard_module_default["practice-card"], className), children: /* @__PURE__ */ jsxRuntime.jsxs(
790
898
  ConditionalWrapper,
791
899
  __spreadProps(__spreadValues({
792
900
  className: PracticeCard_module_default.wrapper,
@@ -797,7 +905,7 @@ var PracticeCard = ({ className, title, cta, image }) => {
797
905
  children: [
798
906
  image && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: PracticeCard_module_default.background }, image)),
799
907
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PracticeCard_module_default.container, children: [
800
- title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(PracticeCard_module_default.title, "h3"), children: title }),
908
+ title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(PracticeCard_module_default.title, "h3"), children: title }),
801
909
  href && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PracticeCard_module_default.cta, children: [
802
910
  /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: PracticeCard_module_default.ctaRest, type: "right" }),
803
911
  /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: PracticeCard_module_default.ctaHover, type: "tiltedRight" })
@@ -819,31 +927,94 @@ var CardCollection_module_default = {
819
927
  "card-collection": "CardCollection_module_card-collection",
820
928
  content: "CardCollection_module_content",
821
929
  wrapper: "CardCollection_module_wrapper",
930
+ cardWrapper: "CardCollection_module_cardWrapper",
822
931
  threeCols: "CardCollection_module_threeCols",
823
- examCard: "CardCollection_module_examCard"
932
+ examCard: "CardCollection_module_examCard",
933
+ "reveal-wrapper": "CardCollection_module_reveal-wrapper",
934
+ "reveal-inner": "CardCollection_module_reveal-inner",
935
+ card: "CardCollection_module_card",
936
+ "is-expanded": "CardCollection_module_is-expanded",
937
+ cta: "CardCollection_module_cta"
824
938
  };
825
939
  var CardCollection = ({
826
940
  className,
827
941
  variant = "default",
828
942
  title,
829
943
  subtitle,
830
- cards,
944
+ cards = [],
945
+ ctaLabel,
831
946
  children
832
947
  }) => {
833
948
  var _a, _b;
949
+ const container = React52.useRef(null);
950
+ const revealWrapper = React52.useRef(null);
951
+ const extraCard = React52.useRef(null);
952
+ const [isExpanded, setIsExpanded] = React52.useState(false);
834
953
  const slots = resolveCompoundSlots(children, {
835
954
  title: CardCollectionTitle,
836
955
  subtitle: CardCollectionSubtitle
837
956
  });
838
957
  const titleNode = (_a = slots.title) != null ? _a : title;
839
958
  const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
840
- return /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: clsx3__default.default(CardCollection_module_default["card-collection"], CardCollection_module_default[variant], className), children: [
841
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CardCollection_module_default.content, children: [
842
- titleNode && /* @__PURE__ */ jsxRuntime.jsx("h2", { children: titleNode }),
843
- subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "subheading", children: subtitleNode })
844
- ] }),
845
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: CardCollection_module_default.wrapper, children: cards == null ? void 0 : cards.map((card, key) => /* @__PURE__ */ jsxRuntime.jsx(Card2, __spreadValues({ className: CardCollection_module_default.card }, card), key)) })
846
- ] });
959
+ const isExamCard = variant === "examCard";
960
+ const visibleCards = isExamCard ? cards.slice(0, 8) : cards;
961
+ const hiddenCards = isExamCard ? cards.slice(8) : [];
962
+ const { contextSafe } = react.useGSAP({ scope: container });
963
+ const handleShowMore = React52.useCallback(() => {
964
+ contextSafe(() => {
965
+ setIsExpanded(true);
966
+ const tl = gsap__default.default.timeline({ defaults: { ease: "power3.inOut" } });
967
+ tl.to(`.${CardCollection_module_default.cta}`, {
968
+ opacity: 0,
969
+ y: 20,
970
+ duration: 0.3,
971
+ display: "none"
972
+ }).to(`.${CardCollection_module_default.cardWrapper}`, { height: "auto", duration: 0.2 }, "<").to(
973
+ revealWrapper.current,
974
+ {
975
+ height: "auto",
976
+ duration: 0.3
977
+ },
978
+ "-=0.1"
979
+ ).from(
980
+ extraCard.current,
981
+ {
982
+ opacity: 0,
983
+ y: 30,
984
+ duration: 0.3,
985
+ clearProps: "all"
986
+ },
987
+ "-=0.3"
988
+ );
989
+ })();
990
+ }, [contextSafe]);
991
+ return /* @__PURE__ */ jsxRuntime.jsxs(
992
+ Container,
993
+ {
994
+ ref: container,
995
+ className: clsx19__default.default(CardCollection_module_default["card-collection"], CardCollection_module_default[variant], className),
996
+ children: [
997
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CardCollection_module_default.content, children: [
998
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("h2", { children: titleNode }),
999
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "subheading", children: subtitleNode })
1000
+ ] }),
1001
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: CardCollection_module_default.wrapper, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx19__default.default(CardCollection_module_default.cardWrapper, { [CardCollection_module_default["is-expanded"]]: isExpanded }), children: [
1002
+ visibleCards.map((card, key) => /* @__PURE__ */ jsxRuntime.jsx(Card2, __spreadValues({ className: CardCollection_module_default.card }, card), key)),
1003
+ isExamCard && hiddenCards.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { ref: revealWrapper, className: CardCollection_module_default["reveal-wrapper"], children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: CardCollection_module_default["reveal-inner"], children: hiddenCards.map((card, key) => /* @__PURE__ */ jsxRuntime.jsx(Card2, __spreadValues({ ref: extraCard, className: CardCollection_module_default.card }, card), key)) }) }),
1004
+ isExamCard && !isExpanded && ctaLabel && /* @__PURE__ */ jsxRuntime.jsx(
1005
+ Button,
1006
+ {
1007
+ variant: "secondary",
1008
+ icon: "downChevronBlack",
1009
+ className: CardCollection_module_default.cta,
1010
+ onClick: handleShowMore,
1011
+ children: ctaLabel
1012
+ }
1013
+ )
1014
+ ] }) })
1015
+ ]
1016
+ }
1017
+ );
847
1018
  };
848
1019
 
849
1020
  // src/widgets/CardCollection/index.ts
@@ -920,7 +1091,7 @@ var ContactModule = ({
920
1091
  },
921
1092
  { scope: containerRef, dependencies: [blurred, animateBlur] }
922
1093
  );
923
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: containerRef, className: clsx3__default.default(ContactModule_module_default["contact-module"], className), children: [
1094
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: containerRef, className: clsx19__default.default(ContactModule_module_default["contact-module"], className), children: [
924
1095
  blurred && /* @__PURE__ */ jsxRuntime.jsx(
925
1096
  "div",
926
1097
  {
@@ -935,8 +1106,8 @@ var ContactModule = ({
935
1106
  /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: ContactModule_module_default.container, children: [
936
1107
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ContactModule_module_default.wrapper, children: [
937
1108
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ContactModule_module_default.content, children: [
938
- titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(ContactModule_module_default.title, "h1"), children: titleNode }),
939
- subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(ContactModule_module_default.subtitle, "subheading"), children: subtitleNode })
1109
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(ContactModule_module_default.title, "h1"), children: titleNode }),
1110
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(ContactModule_module_default.subtitle, "subheading"), children: subtitleNode })
940
1111
  ] }),
941
1112
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: ContactModule_module_default["cta-wrapper"], children: ctas == null ? void 0 : ctas.map((cta, key) => /* @__PURE__ */ jsxRuntime.jsx(
942
1113
  Button,
@@ -960,6 +1131,75 @@ var ContactModule2 = Object.assign(ContactModule, {
960
1131
  Title: ContactModuleTitle,
961
1132
  Subtitle: ContactModuleSubtitle
962
1133
  });
1134
+ var FooterDisclaimer = ({ children }) => {
1135
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
1136
+ };
1137
+
1138
+ // src/widgets/Footer/Footer.module.scss
1139
+ var Footer_module_default = {
1140
+ footer: "Footer_module_footer",
1141
+ container: "Footer_module_container",
1142
+ bottom: "Footer_module_bottom",
1143
+ "bottom-left": "Footer_module_bottom-left",
1144
+ "bottom-right": "Footer_module_bottom-right",
1145
+ supporters: "Footer_module_supporters",
1146
+ "supporters-logos": "Footer_module_supporters-logos",
1147
+ "supporter-link-primary": "Footer_module_supporter-link-primary",
1148
+ "supporter-link": "Footer_module_supporter-link",
1149
+ disclaimer: "Footer_module_disclaimer",
1150
+ copyright: "Footer_module_copyright",
1151
+ "nav-list": "Footer_module_nav-list",
1152
+ "nav-link": "Footer_module_nav-link"
1153
+ };
1154
+ var Footer = ({
1155
+ className,
1156
+ supporters = [],
1157
+ navigationLinks = [],
1158
+ disclaimer,
1159
+ copyright,
1160
+ children
1161
+ }) => {
1162
+ var _a;
1163
+ const columns = [];
1164
+ for (let i = 0; i < navigationLinks.length; i += 5) {
1165
+ columns.push(navigationLinks.slice(i, i + 5));
1166
+ }
1167
+ const slots = resolveCompoundSlots(children, {
1168
+ disclaimer: FooterDisclaimer
1169
+ });
1170
+ const titleNode = (_a = slots.disclaimer) != null ? _a : disclaimer;
1171
+ return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: clsx19__default.default(Footer_module_default.footer, className), children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: Footer_module_default.container, children: [
1172
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_module_default.bottom, children: [
1173
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Footer_module_default["bottom-left"], children: [
1174
+ supporters.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: Footer_module_default.supporters, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: Footer_module_default["supporters-logos"], children: supporters.map(
1175
+ (supporter, index) => supporter.href ? /* @__PURE__ */ jsxRuntime.jsx(
1176
+ "a",
1177
+ {
1178
+ href: supporter.href,
1179
+ target: "_blank",
1180
+ rel: "noopener noreferrer",
1181
+ className: Footer_module_default["supporter-link"],
1182
+ children: /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({}, supporter.image))
1183
+ },
1184
+ index
1185
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: Footer_module_default["supporter-link-primary"], children: /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({}, supporter.image)) }, index)
1186
+ ) }) }),
1187
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(Footer_module_default.disclaimer, "p"), children: titleNode }),
1188
+ copyright && /* @__PURE__ */ jsxRuntime.jsx("p", { className: Footer_module_default.copyright, children: copyright })
1189
+ ] }),
1190
+ columns.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("nav", { className: Footer_module_default["bottom-right"], children: columns.map((column, colIndex) => /* @__PURE__ */ jsxRuntime.jsx("ul", { className: Footer_module_default["nav-list"], children: column.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1191
+ "a",
1192
+ __spreadProps(__spreadValues({
1193
+ href: link.href,
1194
+ className: Footer_module_default["nav-link"]
1195
+ }, link.isExternal ? { target: "_blank", rel: "noopener noreferrer" } : {}), {
1196
+ children: link.label
1197
+ })
1198
+ ) }, link.label)) }, colIndex)) })
1199
+ ] }),
1200
+ children
1201
+ ] }) });
1202
+ };
963
1203
  var HeroBannerTitle = ({ children }) => {
964
1204
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
965
1205
  };
@@ -1005,22 +1245,20 @@ var HeroBanner = ({
1005
1245
  var _a, _b;
1006
1246
  const { is } = useViewPort_default();
1007
1247
  const isTabletBelow = is("tablet", "below");
1008
- const isDesktopBelow = is("desktop", "below");
1009
1248
  const vPageHeroBanner = variant === "pageHeroBanner";
1010
1249
  const vBannerPodcast = variant === "bannerPodcast";
1011
- const animated = brands && brands.logos && brands.logos.length >= 4 && isDesktopBelow;
1012
1250
  const slots = resolveCompoundSlots(children, {
1013
1251
  title: HeroBannerTitle,
1014
1252
  subtitle: HeroBannerSubtitle
1015
1253
  });
1016
1254
  const titleNode = (_a = slots.title) != null ? _a : title;
1017
1255
  const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
1018
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(HeroBanner_module_default.heroBanner, HeroBanner_module_default[variant], className), children: [
1256
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx19__default.default(HeroBanner_module_default.heroBanner, HeroBanner_module_default[variant], className), children: [
1019
1257
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: HeroBanner_module_default.container, children: [
1020
1258
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: HeroBanner_module_default.banner, children: [
1021
1259
  (titleNode || subtitleNode) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: HeroBanner_module_default.text, children: [
1022
- titleNode && /* @__PURE__ */ jsxRuntime.jsx("h1", { className: clsx3__default.default(HeroBanner_module_default.title, "h1"), children: titleNode }),
1023
- subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(HeroBanner_module_default.subtitle, "subtitle"), children: subtitleNode })
1260
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("h1", { className: clsx19__default.default(HeroBanner_module_default.title, "h1"), children: titleNode }),
1261
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(HeroBanner_module_default.subtitle, "subtitle"), children: subtitleNode })
1024
1262
  ] }),
1025
1263
  cta && cta.length > 0 && !vBannerPodcast && /* @__PURE__ */ jsxRuntime.jsx("div", { className: HeroBanner_module_default.ctaContainer, children: cta.slice(0, 2).map((cta2, key) => {
1026
1264
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -1043,8 +1281,7 @@ var HeroBanner = ({
1043
1281
  __spreadValues({
1044
1282
  className: HeroBanner_module_default.brandsStrip,
1045
1283
  variant: "light",
1046
- size: isTabletBelow || vPageHeroBanner ? "small" : void 0,
1047
- animate: animated
1284
+ size: isTabletBelow || vPageHeroBanner ? "small" : void 0
1048
1285
  }, brands)
1049
1286
  ),
1050
1287
  backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: HeroBanner_module_default.backgroundImage }, backgroundImage))
@@ -1075,32 +1312,72 @@ var MiniBannerSubtitle = ({ children }) => {
1075
1312
  var MiniBanner_module_default = {
1076
1313
  minibanner: "MiniBanner_module_minibanner",
1077
1314
  background: "MiniBanner_module_background",
1078
- container: "MiniBanner_module_container",
1079
- miniBannerNoBG: "MiniBanner_module_miniBannerNoBG"
1315
+ textContainer: "MiniBanner_module_textContainer",
1316
+ logo: "MiniBanner_module_logo",
1317
+ headingWrapper: "MiniBanner_module_headingWrapper",
1318
+ title: "MiniBanner_module_title",
1319
+ ctaContainer: "MiniBanner_module_ctaContainer",
1320
+ miniBannerNoBG: "MiniBanner_module_miniBannerNoBG",
1321
+ miniBannerTextLeft: "MiniBanner_module_miniBannerTextLeft"
1322
+ };
1323
+ var MiniBannerPreTitle = ({ children }) => {
1324
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
1080
1325
  };
1081
1326
  var MiniBanner = ({
1082
1327
  className,
1083
1328
  variant = "default",
1329
+ pretitle,
1084
1330
  title,
1085
1331
  subtitle,
1086
1332
  logo,
1087
1333
  background,
1334
+ cta,
1088
1335
  children
1089
1336
  }) => {
1090
- var _a, _b;
1337
+ var _a, _b, _c, _d, _e;
1091
1338
  const slots = resolveCompoundSlots(children, {
1339
+ pretitle: MiniBannerPreTitle,
1092
1340
  title: MiniBannerTitle,
1093
1341
  subtitle: MiniBannerSubtitle
1094
1342
  });
1095
- const titleNode = (_a = slots.title) != null ? _a : title;
1096
- const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
1097
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(MiniBanner_module_default.minibanner, MiniBanner_module_default[variant], className), children: [
1098
- background && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: MiniBanner_module_default.background }, background)),
1099
- /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: MiniBanner_module_default.container, children: [
1100
- logo && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: MiniBanner_module_default.logo }, logo)),
1101
- titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h4", children: titleNode }),
1102
- subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: variant === "miniBannerNoBG" ? "subheading" : "h1", children: subtitleNode })
1103
- ] })
1343
+ const { is } = useViewPort_default();
1344
+ const isTabletBelow = is("tablet", "below");
1345
+ const isMiniBannerNoBG = variant === "miniBannerNoBG";
1346
+ const isMiniBannerTextLeft = variant === "miniBannerTextLeft";
1347
+ const pretitleNode = (_a = slots.pretitle) != null ? _a : pretitle;
1348
+ const titleNode = (_b = slots.title) != null ? _b : title;
1349
+ const subtitleNode = (_c = slots.subtitle) != null ? _c : subtitle;
1350
+ return /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: clsx19__default.default(MiniBanner_module_default.minibanner, MiniBanner_module_default[variant], className), children: [
1351
+ ((background == null ? void 0 : background.src) || ((_d = background == null ? void 0 : background.desktop) == null ? void 0 : _d.src) || ((_e = background == null ? void 0 : background.mobile) == null ? void 0 : _e.src)) && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: MiniBanner_module_default.background }, background)),
1352
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: MiniBanner_module_default.textContainer, children: [
1353
+ (logo == null ? void 0 : logo.src) && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: MiniBanner_module_default.logo }, logo)),
1354
+ pretitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "small", children: pretitleNode }),
1355
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: MiniBanner_module_default.headingWrapper, children: titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(MiniBanner_module_default.title, isMiniBannerTextLeft ? "h1" : "h4"), children: titleNode }) }),
1356
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx(
1357
+ "div",
1358
+ {
1359
+ className: clsx19__default.default(MiniBanner_module_default.title, {
1360
+ subheading: isMiniBannerNoBG || isMiniBannerTextLeft,
1361
+ h1: !isMiniBannerNoBG && !isMiniBannerTextLeft
1362
+ }),
1363
+ children: subtitleNode
1364
+ }
1365
+ )
1366
+ ] }),
1367
+ cta && cta.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: MiniBanner_module_default.ctaContainer, children: cta.slice(0, 2).map((cta2, key) => {
1368
+ return /* @__PURE__ */ jsxRuntime.jsx(
1369
+ Button,
1370
+ {
1371
+ href: cta2.url,
1372
+ isExternal: cta2.isExternal,
1373
+ variant: "secondary",
1374
+ fullWidth: isTabletBelow,
1375
+ logo: cta2.logo,
1376
+ children: cta2.label
1377
+ },
1378
+ key
1379
+ );
1380
+ }) })
1104
1381
  ] });
1105
1382
  };
1106
1383
 
@@ -1143,13 +1420,13 @@ var MiniSectionCta = ({
1143
1420
  });
1144
1421
  const titleNode = (_a = slots.title) != null ? _a : title;
1145
1422
  const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
1146
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(MiniSectionCta_module_default.miniSectionCta, MiniSectionCta_module_default[variant], className), children: /* @__PURE__ */ jsxRuntime.jsx(Container, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: MiniSectionCta_module_default.wrapper, children: [
1423
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(MiniSectionCta_module_default.miniSectionCta, MiniSectionCta_module_default[variant], className), children: /* @__PURE__ */ jsxRuntime.jsx(Container, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: MiniSectionCta_module_default.wrapper, children: [
1147
1424
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: MiniSectionCta_module_default.col, children: [
1148
1425
  titleNode && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: variant === "BgColorBlack" || variant === "BgColorGrey" ? "h3" : "h2", children: titleNode }),
1149
1426
  subtitleNode && /* @__PURE__ */ jsxRuntime.jsx(
1150
1427
  "div",
1151
1428
  {
1152
- className: clsx3__default.default(MiniSectionCta_module_default.subtitle, variant === "infoCallout" ? "h4" : "subheading"),
1429
+ className: clsx19__default.default(MiniSectionCta_module_default.subtitle, variant === "infoCallout" ? "h4" : "subheading"),
1153
1430
  children: subtitleNode
1154
1431
  }
1155
1432
  )
@@ -1212,7 +1489,7 @@ var PracticePathCards = ({
1212
1489
  const titleNode = (_a = slots.title) != null ? _a : title;
1213
1490
  const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
1214
1491
  const footerNode = (_c = slots.footer) != null ? _c : footer;
1215
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(PracticePathCards_module_default["practice-path-cards"], className), children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: PracticePathCards_module_default.container, children: [
1492
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(PracticePathCards_module_default["practice-path-cards"], className), children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: PracticePathCards_module_default.container, children: [
1216
1493
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PracticePathCards_module_default.wrapper, children: [
1217
1494
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PracticePathCards_module_default.content, children: [
1218
1495
  titleNode && /* @__PURE__ */ jsxRuntime.jsx("h2", { children: titleNode }),
@@ -1266,8 +1543,8 @@ var Teaser5050With3Text = ({
1266
1543
  title: Teaser5050With3TextTitle
1267
1544
  });
1268
1545
  const titleNode = (_a = slots.title) != null ? _a : title;
1269
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(Teaser5050With3Text_module_default["teaser5050-3text"], Teaser5050With3Text_module_default[variant], className), children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: Teaser5050With3Text_module_default.container, children: [
1270
- titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(Teaser5050With3Text_module_default.title, "h3"), children: titleNode }),
1546
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(Teaser5050With3Text_module_default["teaser5050-3text"], Teaser5050With3Text_module_default[variant], className), children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: Teaser5050With3Text_module_default.container, children: [
1547
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(Teaser5050With3Text_module_default.title, "h3"), children: titleNode }),
1271
1548
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Teaser5050With3Text_module_default.content, children: [
1272
1549
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: Teaser5050With3Text_module_default.cards, children: cards == null ? void 0 : cards.map((card, key) => /* @__PURE__ */ jsxRuntime.jsx(InfoCard2, __spreadValues({}, card), key)) }),
1273
1550
  image && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: Teaser5050With3Text_module_default.image }, image))
@@ -1312,10 +1589,10 @@ var Teaser5050WithCta = ({
1312
1589
  });
1313
1590
  const titleNode = (_a = slots.title) != null ? _a : title;
1314
1591
  const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
1315
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(Teaser5050WithCta_module_default.teaser5050, Teaser5050WithCta_module_default[variant], className), children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: Teaser5050WithCta_module_default.container, children: [
1592
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(Teaser5050WithCta_module_default.teaser5050, Teaser5050WithCta_module_default[variant], className), children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: Teaser5050WithCta_module_default.container, children: [
1316
1593
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Teaser5050WithCta_module_default.wrapper, children: [
1317
1594
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Teaser5050WithCta_module_default.content, children: [
1318
- titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(Teaser5050WithCta_module_default.title, "h3"), children: titleNode }),
1595
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx19__default.default(Teaser5050WithCta_module_default.title, "h3"), children: titleNode }),
1319
1596
  subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "subheading", children: subtitleNode })
1320
1597
  ] }),
1321
1598
  cta && /* @__PURE__ */ jsxRuntime.jsx(
@@ -1338,6 +1615,111 @@ var Teaser5050WithCta2 = Object.assign(Teaser5050WithCta, {
1338
1615
  Title: Teaser5050WithCtaTitle,
1339
1616
  Subtitle: Teaser5050WithCtaSubtitle
1340
1617
  });
1618
+
1619
+ // src/components/UpcomingEventCard/UpcomingEventCard.module.scss
1620
+ var UpcomingEventCard_module_default = {
1621
+ hidden: "UpcomingEventCard_module_hidden",
1622
+ image: "UpcomingEventCard_module_image",
1623
+ "text-content": "UpcomingEventCard_module_text-content",
1624
+ cta: "UpcomingEventCard_module_cta",
1625
+ date: "UpcomingEventCard_module_date",
1626
+ location: "UpcomingEventCard_module_location",
1627
+ description: "UpcomingEventCard_module_description"
1628
+ };
1629
+ var UpcomingEventCard = ({
1630
+ className,
1631
+ image,
1632
+ date,
1633
+ title,
1634
+ location,
1635
+ description,
1636
+ cta
1637
+ }) => {
1638
+ const { is } = useViewPort_default();
1639
+ const hasCtaWithoutImage = cta && cta.url && !image;
1640
+ const isBelowTablet = is("tablet", "below");
1641
+ const isBelowMobile = is("mobile-l", "below");
1642
+ return /* @__PURE__ */ jsxRuntime.jsxs("article", { className: clsx19__default.default(className), children: [
1643
+ image && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadProps(__spreadValues({}, image), { className: clsx19__default.default(UpcomingEventCard_module_default.image, className) })),
1644
+ hasCtaWithoutImage && /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", className: clsx19__default.default(isBelowTablet && UpcomingEventCard_module_default.hidden), href: cta.url, children: cta.label }),
1645
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx19__default.default(UpcomingEventCard_module_default["text-content"], className), children: [
1646
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: UpcomingEventCard_module_default.date, children: date }),
1647
+ title && /* @__PURE__ */ jsxRuntime.jsx("h3", { children: title }),
1648
+ location && /* @__PURE__ */ jsxRuntime.jsx("span", { className: UpcomingEventCard_module_default.location, children: location }),
1649
+ description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: UpcomingEventCard_module_default.description, children: description }),
1650
+ cta && cta.url && /* @__PURE__ */ jsxRuntime.jsx(
1651
+ Button,
1652
+ {
1653
+ variant: "secondary",
1654
+ className: clsx19__default.default(!isBelowTablet && !image && UpcomingEventCard_module_default.hidden, UpcomingEventCard_module_default.cta),
1655
+ fullWidth: isBelowMobile,
1656
+ href: cta.url,
1657
+ children: cta.label
1658
+ }
1659
+ )
1660
+ ] })
1661
+ ] });
1662
+ };
1663
+
1664
+ // src/components/Carousel/Carousel.module.scss
1665
+ var Carousel_module_default = {
1666
+ "carousel-item": "Carousel_module_carousel-item"
1667
+ };
1668
+ var Carousel = (_a) => {
1669
+ var _b = _a, { slides, className } = _b, props = __objRest(_b, ["slides", "className"]);
1670
+ return /* @__PURE__ */ jsxRuntime.jsx(
1671
+ react$1.Swiper,
1672
+ __spreadProps(__spreadValues({
1673
+ className: clsx19__default.default(Carousel_module_default.carousel, className),
1674
+ spaceBetween: 0,
1675
+ slidesPerView: 1,
1676
+ modules: [modules.FreeMode],
1677
+ freeMode: { enabled: true, sticky: false, momentum: true },
1678
+ wrapperTag: "ul",
1679
+ loop: false
1680
+ }, props), {
1681
+ children: slides.map((slide, index) => /* @__PURE__ */ jsxRuntime.jsx(react$1.SwiperSlide, { tag: "li", className: Carousel_module_default["carousel-item"], children: slide }, index))
1682
+ })
1683
+ );
1684
+ };
1685
+
1686
+ // src/widgets/EventList/EventList.module.scss
1687
+ var EventList_module_default = {
1688
+ grey: "EventList_module_grey",
1689
+ "header-container": "EventList_module_header-container"
1690
+ };
1691
+ var EventListTitle = ({ children }) => {
1692
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
1693
+ };
1694
+ var EventList = ({ className, title, items, cta, variant, children }) => {
1695
+ var _a;
1696
+ const { is } = useViewPort_default();
1697
+ const slots = resolveCompoundSlots(children, {
1698
+ title: EventListTitle
1699
+ });
1700
+ const titleNode = (_a = slots.title) != null ? _a : title;
1701
+ const isBelowTablet = is("tablet", "below");
1702
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: clsx19__default.default(EventList_module_default.section, variant && EventList_module_default[variant], className), children: [
1703
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: EventList_module_default["header-container"], children: [
1704
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("h2", { children: titleNode }),
1705
+ cta && cta.url && /* @__PURE__ */ jsxRuntime.jsx(Button, { className: EventList_module_default.cta, variant: "nofillblack", href: cta.url, icon: "rightBlack", children: cta.label })
1706
+ ] }),
1707
+ variant === "grey" && isBelowTablet && /* @__PURE__ */ jsxRuntime.jsx(
1708
+ Carousel,
1709
+ {
1710
+ className: EventList_module_default[variant],
1711
+ slides: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(UpcomingEventCard, __spreadValues({ className: variant }, item), item.title))
1712
+ }
1713
+ ),
1714
+ variant === "grey" && !isBelowTablet && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: clsx19__default.default(EventList_module_default[variant]), children: items == null ? void 0 : items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: variant, children: /* @__PURE__ */ jsxRuntime.jsx(UpcomingEventCard, __spreadProps(__spreadValues({}, item), { className: variant })) }, index)) }),
1715
+ !variant && /* @__PURE__ */ jsxRuntime.jsx("ul", { children: items == null ? void 0 : items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(UpcomingEventCard, __spreadValues({}, item)) }, index)) })
1716
+ ] });
1717
+ };
1718
+
1719
+ // src/widgets/EventList/index.ts
1720
+ var EventList2 = Object.assign(EventList, {
1721
+ Title: EventListTitle
1722
+ });
1341
1723
  function useIntersectionObserver({
1342
1724
  animateOnce = false,
1343
1725
  options = {}
@@ -1376,6 +1758,8 @@ exports.ConditionalWrapper = ConditionalWrapper;
1376
1758
  exports.ContactModule = ContactModule2;
1377
1759
  exports.Container = Container;
1378
1760
  exports.CountingCard = CountingCard2;
1761
+ exports.EventList = EventList2;
1762
+ exports.Footer = Footer;
1379
1763
  exports.HeroBanner = HeroBanner2;
1380
1764
  exports.Icon = Icon;
1381
1765
  exports.InfoCard = InfoCard2;