@digital-b2c/coreui-kit 0.1.0 → 0.2.0

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
@@ -40,6 +40,35 @@ var __objRest = (source, exclude) => {
40
40
  }
41
41
  return target;
42
42
  };
43
+
44
+ // src/components/Picture/Picture.module.scss
45
+ var Picture_module_default = {};
46
+ var Picture = (_a) => {
47
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
48
+ var _b2, _c;
49
+ if ("src" in props) {
50
+ return /* @__PURE__ */ jsxRuntime.jsx("img", __spreadValues({ className }, props));
51
+ }
52
+ const _a2 = props, { desktop, mobile } = _a2, rest = __objRest(_a2, ["desktop", "mobile"]);
53
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
54
+ /* @__PURE__ */ jsxRuntime.jsx(
55
+ "img",
56
+ __spreadValues({
57
+ src: desktop.src,
58
+ alt: desktop.alt,
59
+ className: clsx3__default.default(className, Picture_module_default["image-desktop"])
60
+ }, rest)
61
+ ),
62
+ /* @__PURE__ */ jsxRuntime.jsx(
63
+ "img",
64
+ __spreadValues({
65
+ src: (_b2 = mobile == null ? void 0 : mobile.src) != null ? _b2 : desktop.src,
66
+ alt: (_c = mobile == null ? void 0 : mobile.alt) != null ? _c : desktop.alt,
67
+ className: clsx3__default.default(className, Picture_module_default["image-mobile"])
68
+ }, rest)
69
+ )
70
+ ] });
71
+ };
43
72
  var Anchor = (_a) => {
44
73
  var _b = _a, { children, isExternal } = _b, props = __objRest(_b, ["children", "isExternal"]);
45
74
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -297,7 +326,8 @@ var Button = (_a) => {
297
326
  fullWidth,
298
327
  href,
299
328
  isExternal,
300
- icon
329
+ icon,
330
+ logo
301
331
  } = _b, rest = __objRest(_b, [
302
332
  "className",
303
333
  "children",
@@ -305,7 +335,8 @@ var Button = (_a) => {
305
335
  "fullWidth",
306
336
  "href",
307
337
  "isExternal",
308
- "icon"
338
+ "icon",
339
+ "logo"
309
340
  ]);
310
341
  const isLink = !!href;
311
342
  const props = __spreadValues(__spreadValues({
@@ -318,18 +349,185 @@ var Button = (_a) => {
318
349
  }, isLink ? { href, isExternal } : {}), rest);
319
350
  return /* @__PURE__ */ jsxRuntime.jsxs(ConditionalWrapper, __spreadProps(__spreadValues({ wrapper: Anchor, fallback: "button", condition: isLink }, props), { children: [
320
351
  children,
321
- icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { type: icon })
352
+ logo ? /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: Button_module_default.logo }, logo)) : icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { type: icon, className: Button_module_default.icon })
322
353
  ] }));
323
354
  };
324
355
 
356
+ // src/hooks/useDebounce.ts
357
+ var useDebounce = (fn, delay) => {
358
+ let timer;
359
+ return (...args) => {
360
+ if (timer) clearTimeout(timer);
361
+ timer = setTimeout(() => {
362
+ fn(...args);
363
+ }, delay);
364
+ };
365
+ };
366
+ var useDebounce_default = useDebounce;
367
+
368
+ // src/hooks/useViewPort.ts
369
+ var ORDER = [
370
+ "mobile-s",
371
+ "mobile-m",
372
+ "mobile-l",
373
+ "tablet",
374
+ "desktop",
375
+ "desktop-l",
376
+ "desktop-xl"
377
+ ];
378
+ var breakpointConditions = {
379
+ "mobile-s": (size) => size <= 320,
380
+ "mobile-m": (size) => size > 320 && size <= 375,
381
+ "mobile-l": (size) => size > 375 && size <= 425,
382
+ tablet: (size) => size > 425 && size <= 768,
383
+ desktop: (size) => size > 768 && size <= 1024,
384
+ "desktop-l": (size) => size > 1024 && size <= 1440,
385
+ "desktop-xl": (size) => size > 1440
386
+ };
387
+ var getDeviceType = (width) => {
388
+ for (const key in breakpointConditions) {
389
+ const deviceType = key;
390
+ if (breakpointConditions[deviceType](width)) {
391
+ return deviceType;
392
+ }
393
+ }
394
+ return "desktop";
395
+ };
396
+ var useViewPort = () => {
397
+ const [device, setDevice] = React.useState(
398
+ () => typeof window !== "undefined" ? getDeviceType(window.innerWidth) : "desktop"
399
+ );
400
+ const getOtherDevices = React.useCallback(
401
+ (list, what, includeSelf = false) => {
402
+ const deviceIndex = list.indexOf(what) + (!includeSelf ? 1 : 0);
403
+ return [...list].slice(deviceIndex);
404
+ },
405
+ []
406
+ );
407
+ const onWindowResize = React.useCallback(() => {
408
+ setDevice(getDeviceType(window.innerWidth));
409
+ }, []);
410
+ const onWindowResizeDebounce = useDebounce_default(onWindowResize, 100);
411
+ React.useEffect(() => {
412
+ window.addEventListener("resize", onWindowResizeDebounce);
413
+ return () => window.removeEventListener("resize", onWindowResizeDebounce);
414
+ }, [onWindowResizeDebounce]);
415
+ const is = (what, range) => {
416
+ const isArray = Array.isArray(what);
417
+ if (!range && !isArray) {
418
+ return what === device;
419
+ }
420
+ if (!range && isArray) {
421
+ return device ? what.includes(device) : false;
422
+ }
423
+ const list = range === "above" ? ORDER : [...ORDER].reverse();
424
+ const devices = getOtherDevices(list, what, true);
425
+ return device && devices.includes(device);
426
+ };
427
+ const isNot = (what) => !is(what);
428
+ const biggerThan = (what) => {
429
+ const devices = getOtherDevices(ORDER, what);
430
+ return device && devices.includes(device);
431
+ };
432
+ const smallerThan = (what) => {
433
+ const reverseOrder = [...ORDER].reverse();
434
+ const devices = getOtherDevices(reverseOrder, what);
435
+ return device && devices.includes(device);
436
+ };
437
+ return { is, isNot, biggerThan, smallerThan, device };
438
+ };
439
+ var useViewPort_default = useViewPort;
440
+
441
+ // src/components/BrandsStrip/BrandsStrip.module.scss
442
+ var BrandsStrip_module_default = {};
443
+ var BrandsStrip = ({
444
+ className,
445
+ variant = "light",
446
+ title,
447
+ logos = [],
448
+ cta,
449
+ size,
450
+ animate = false
451
+ }) => {
452
+ const [show, setShow] = React.useState(false);
453
+ const { is } = useViewPort_default();
454
+ const isTabletBelow = is("tablet", "below");
455
+ const shouldAnimate = !title && animate;
456
+ return /* @__PURE__ */ jsxRuntime.jsxs(
457
+ "div",
458
+ {
459
+ className: clsx3__default.default(
460
+ BrandsStrip_module_default.brandsStrip,
461
+ BrandsStrip_module_default[variant],
462
+ { [BrandsStrip_module_default.small]: size === "small" },
463
+ className
464
+ ),
465
+ onMouseEnter: () => setShow(true),
466
+ onMouseLeave: () => setShow(false),
467
+ style: { "--total-items": logos.length },
468
+ children: [
469
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(BrandsStrip_module_default.container, { [BrandsStrip_module_default.blurred]: show && logos.length > 1 }), children: [
470
+ title && logos.length == 1 && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: clsx3__default.default("body", BrandsStrip_module_default.title), children: title }),
471
+ 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(
472
+ "div",
473
+ {
474
+ className: clsx3__default.default(BrandsStrip_module_default.logoWrapper, { [BrandsStrip_module_default.paused]: show }),
475
+ style: { "--item-index": index },
476
+ children: /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: BrandsStrip_module_default.logo }, logo))
477
+ },
478
+ index
479
+ )) })
480
+ ] }),
481
+ cta && show && logos.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
482
+ Button,
483
+ {
484
+ className: BrandsStrip_module_default.cta,
485
+ variant: "secondary",
486
+ href: cta.url,
487
+ isExternal: cta.isExternal,
488
+ icon: "tiltedRightBlack",
489
+ fullWidth: isTabletBelow,
490
+ children: cta == null ? void 0 : cta.label
491
+ }
492
+ )
493
+ ]
494
+ }
495
+ );
496
+ };
497
+ var CardTitle = ({ children }) => {
498
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
499
+ };
500
+ var CardSubtitle = ({ children }) => {
501
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
502
+ };
503
+ function resolveCompoundSlots(children, slots) {
504
+ const resolved = {};
505
+ React.Children.forEach(children, (child) => {
506
+ if (!React.isValidElement(child)) return;
507
+ Object.entries(slots).forEach(([key, Component]) => {
508
+ if (child.type === Component) {
509
+ resolved[key] = child.props.children;
510
+ }
511
+ });
512
+ });
513
+ return resolved;
514
+ }
515
+
325
516
  // src/components/Card/Card.module.scss
326
517
  var Card_module_default = {};
327
- var Card = ({ className, title, subtitle, cta, icon }) => {
518
+ var Card = ({ className, title, subtitle, cta, icon, children }) => {
519
+ var _a, _b;
520
+ const slots = resolveCompoundSlots(children, {
521
+ title: CardTitle,
522
+ subtitle: CardSubtitle
523
+ });
524
+ const titleNode = (_a = slots.title) != null ? _a : title;
525
+ const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
328
526
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(Card_module_default.card, className), children: [
329
527
  icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { type: icon }),
330
528
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Card_module_default.content, children: [
331
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "h4", children: title }),
332
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { children: subtitle })
529
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "h4", children: titleNode }),
530
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("p", { children: subtitleNode })
333
531
  ] }),
334
532
  cta && /* @__PURE__ */ jsxRuntime.jsx(
335
533
  Button,
@@ -344,59 +542,68 @@ var Card = ({ className, title, subtitle, cta, icon }) => {
344
542
  ] });
345
543
  };
346
544
 
347
- // src/components/Picture/Picture.module.scss
348
- var Picture_module_default = {};
349
- var Picture = (_a) => {
350
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
351
- var _b2, _c;
352
- if ("src" in props) {
353
- return /* @__PURE__ */ jsxRuntime.jsx("img", __spreadValues({ className }, props));
354
- }
355
- const _a2 = props, { desktop, mobile } = _a2, rest = __objRest(_a2, ["desktop", "mobile"]);
356
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
357
- /* @__PURE__ */ jsxRuntime.jsx(
358
- "img",
359
- __spreadValues({
360
- src: desktop.src,
361
- alt: desktop.alt,
362
- className: clsx3__default.default(className, Picture_module_default["image-desktop"])
363
- }, rest)
364
- ),
365
- /* @__PURE__ */ jsxRuntime.jsx(
366
- "img",
367
- __spreadValues({
368
- src: (_b2 = mobile == null ? void 0 : mobile.src) != null ? _b2 : desktop.src,
369
- alt: (_c = mobile == null ? void 0 : mobile.alt) != null ? _c : desktop.alt,
370
- className: clsx3__default.default(className, Picture_module_default["image-mobile"])
371
- }, rest)
372
- )
373
- ] });
545
+ // src/components/Card/index.ts
546
+ var Card2 = Object.assign(Card, {
547
+ Title: CardTitle,
548
+ Subtitle: CardSubtitle
549
+ });
550
+ var CountingCardTitle = ({ children }) => {
551
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
374
552
  };
375
553
 
376
554
  // src/components/CountingCard/CountingCard.module.scss
377
555
  var CountingCard_module_default = {};
378
- var CountingCard = ({ className, title, count, image }) => {
556
+ var CountingCard = ({ className, title, count, image, children }) => {
557
+ var _a;
558
+ const slots = resolveCompoundSlots(children, {
559
+ title: CountingCardTitle
560
+ });
561
+ const titleNode = (_a = slots.title) != null ? _a : title;
379
562
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(CountingCard_module_default["counting-card"], className), children: [
380
563
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CountingCard_module_default.content, children: [
381
- title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "body", children: title }),
564
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "body", children: titleNode }),
382
565
  count && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(CountingCard_module_default.count, "h1"), children: count })
383
566
  ] }),
384
567
  image && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: CountingCard_module_default.logo }, image))
385
568
  ] });
386
569
  };
387
570
 
571
+ // src/components/CountingCard/index.ts
572
+ var CountingCard2 = Object.assign(CountingCard, {
573
+ Title: CountingCardTitle
574
+ });
575
+ var InfoCardTitle = ({ children }) => {
576
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
577
+ };
578
+ var InfoCardSubtitle = ({ children }) => {
579
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
580
+ };
581
+
388
582
  // src/components/InfoCard/InfoCard.module.scss
389
583
  var InfoCard_module_default = {};
390
- var InfoCard = ({ className, title, subtitle, icon, badge }) => {
584
+ var InfoCard = ({ className, title, subtitle, icon, badge, children }) => {
585
+ var _a, _b;
586
+ const slots = resolveCompoundSlots(children, {
587
+ title: InfoCardTitle,
588
+ subtitle: InfoCardSubtitle
589
+ });
590
+ const titleNode = (_a = slots.title) != null ? _a : title;
591
+ const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
391
592
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(InfoCard_module_default["info-card"], { [InfoCard_module_default.hasIcon]: !!icon }, className), children: [
392
593
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: InfoCard_module_default.header, children: [
393
594
  icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { type: icon }) : badge ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(InfoCard_module_default.badge, "h4"), children: badge }) : null,
394
- title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h4", children: title })
595
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h4", children: titleNode })
395
596
  ] }),
396
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "body", children: subtitle })
597
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "body", children: subtitleNode })
397
598
  ] });
398
599
  };
399
600
 
601
+ // src/components/InfoCard/index.ts
602
+ var InfoCard2 = Object.assign(InfoCard, {
603
+ Title: InfoCardTitle,
604
+ Subtitle: InfoCardSubtitle
605
+ });
606
+
400
607
  // src/components/Pagination/Pagination.module.scss
401
608
  var Pagination_module_default = {};
402
609
  var Pagination = ({
@@ -485,6 +692,38 @@ var Container = (_a) => {
485
692
  return /* @__PURE__ */ jsxRuntime.jsx("div", __spreadProps(__spreadValues({ className: clsx3__default.default(Container_module_default.container, className) }, props), { children }));
486
693
  };
487
694
 
695
+ // src/components/PracticeCard/PracticeCard.module.scss
696
+ var PracticeCard_module_default = {};
697
+ var PracticeCard = ({ className, title, cta, image }) => {
698
+ const { url: href, isExternal } = cta != null ? cta : {};
699
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(PracticeCard_module_default["practice-card"], className), children: /* @__PURE__ */ jsxRuntime.jsxs(
700
+ ConditionalWrapper,
701
+ __spreadProps(__spreadValues({
702
+ className: PracticeCard_module_default.wrapper,
703
+ wrapper: Anchor,
704
+ fallback: "div",
705
+ condition: !!href
706
+ }, href ? { href, isExternal } : {}), {
707
+ children: [
708
+ image && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: PracticeCard_module_default.background }, image)),
709
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PracticeCard_module_default.container, children: [
710
+ title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(PracticeCard_module_default.title, "h3"), children: title }),
711
+ href && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PracticeCard_module_default.cta, children: [
712
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: PracticeCard_module_default.ctaRest, type: "right" }),
713
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: PracticeCard_module_default.ctaHover, type: "tiltedRight" })
714
+ ] })
715
+ ] })
716
+ ]
717
+ })
718
+ ) });
719
+ };
720
+ var CardCollectionTitle = ({ children }) => {
721
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
722
+ };
723
+ var CardCollectionSubtitle = ({ children }) => {
724
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
725
+ };
726
+
488
727
  // src/widgets/CardCollection/CardCollection.module.scss
489
728
  var CardCollection_module_default = {};
490
729
  var CardCollection = ({
@@ -492,17 +731,190 @@ var CardCollection = ({
492
731
  variant = "default",
493
732
  title,
494
733
  subtitle,
495
- cards
734
+ cards,
735
+ children
496
736
  }) => {
737
+ var _a, _b;
738
+ const slots = resolveCompoundSlots(children, {
739
+ title: CardCollectionTitle,
740
+ subtitle: CardCollectionSubtitle
741
+ });
742
+ const titleNode = (_a = slots.title) != null ? _a : title;
743
+ const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
497
744
  return /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: clsx3__default.default(CardCollection_module_default["card-collection"], CardCollection_module_default[variant], className), children: [
498
745
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CardCollection_module_default.content, children: [
499
- title && /* @__PURE__ */ jsxRuntime.jsx("h2", { children: title }),
500
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "subheading", children: subtitle })
746
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("h2", { children: titleNode }),
747
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "subheading", children: subtitleNode })
748
+ ] }),
749
+ /* @__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)) })
750
+ ] });
751
+ };
752
+
753
+ // src/widgets/CardCollection/index.ts
754
+ var CardCollection2 = Object.assign(CardCollection, {
755
+ Title: CardCollectionTitle,
756
+ Subtitle: CardCollectionSubtitle
757
+ });
758
+ var ContactModuleTitle = ({ children }) => {
759
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
760
+ };
761
+ var ContactModuleSubtitle = ({ children }) => {
762
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
763
+ };
764
+
765
+ // src/widgets/ContactModule/ContactModule.module.scss
766
+ var ContactModule_module_default = {};
767
+ var ContactModule = ({
768
+ className,
769
+ children,
770
+ title,
771
+ subtitle,
772
+ ctas,
773
+ image,
774
+ blurred
775
+ }) => {
776
+ var _a, _b;
777
+ const slots = resolveCompoundSlots(children, {
778
+ title: ContactModuleTitle,
779
+ subtitle: ContactModuleSubtitle
780
+ });
781
+ const titleNode = (_a = slots.title) != null ? _a : title;
782
+ const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
783
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(ContactModule_module_default["contact-module"], { [ContactModule_module_default.blurred]: blurred }, className), children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: ContactModule_module_default.container, children: [
784
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ContactModule_module_default.wrapper, children: [
785
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ContactModule_module_default.content, children: [
786
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(ContactModule_module_default.title, "h1"), children: titleNode }),
787
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "subheading", children: subtitleNode })
788
+ ] }),
789
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ContactModule_module_default["cta-wrapper"], children: ctas == null ? void 0 : ctas.map((cta, key) => /* @__PURE__ */ jsxRuntime.jsx(
790
+ Button,
791
+ {
792
+ className: ContactModule_module_default.cta,
793
+ href: cta.url,
794
+ isExternal: cta.isExternal,
795
+ variant: key % 2 === 0 ? "secondary" : "primary",
796
+ children: cta.label
797
+ },
798
+ key
799
+ )) })
800
+ ] }),
801
+ image && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: ContactModule_module_default.image }, image))
802
+ ] }) });
803
+ };
804
+
805
+ // src/widgets/ContactModule/index.ts
806
+ var ContactModule2 = Object.assign(ContactModule, {
807
+ Title: ContactModuleTitle,
808
+ Subtitle: ContactModuleSubtitle
809
+ });
810
+
811
+ // src/widgets/HeroBanner/HeroBanner.module.scss
812
+ var HeroBanner_module_default = {};
813
+ var HeroBanner = ({
814
+ className,
815
+ variant = "pageHeroBanner",
816
+ title,
817
+ subtitle,
818
+ backgroundImage,
819
+ logo,
820
+ cta,
821
+ brands
822
+ }) => {
823
+ const { is } = useViewPort_default();
824
+ const isTabletBelow = is("tablet", "below");
825
+ const isDesktopBelow = is("desktop", "below");
826
+ const vMainHeroBanner = variant === "mainHeroBanner";
827
+ const vBannerPodcast = variant === "bannerPodcast";
828
+ const animated = brands && brands.logos && brands.logos.length >= 4 && isDesktopBelow;
829
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(HeroBanner_module_default.heroBanner, HeroBanner_module_default[variant], className), children: [
830
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: HeroBanner_module_default.container, children: [
831
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: HeroBanner_module_default.banner, children: [
832
+ (title || subtitle) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: HeroBanner_module_default.text, children: [
833
+ title && /* @__PURE__ */ jsxRuntime.jsx("h1", { className: clsx3__default.default(HeroBanner_module_default.title, "h1"), children: title }),
834
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(HeroBanner_module_default.subtitle, "subtitle"), children: subtitle })
835
+ ] }),
836
+ cta && cta.length > 0 && !vBannerPodcast && /* @__PURE__ */ jsxRuntime.jsx("div", { className: HeroBanner_module_default.ctaContainer, children: cta.map((cta2, key) => {
837
+ return /* @__PURE__ */ jsxRuntime.jsx(
838
+ Button,
839
+ {
840
+ href: cta2.url,
841
+ isExternal: cta2.isExternal,
842
+ variant: key % 2 ? vMainHeroBanner && !isTabletBelow ? "nofill" : "grey" : "primary",
843
+ fullWidth: isTabletBelow,
844
+ children: cta2.label
845
+ },
846
+ key
847
+ );
848
+ }) })
849
+ ] }),
850
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: HeroBanner_module_default.logoWrapper, children: logo && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: HeroBanner_module_default.logo }, logo)) }),
851
+ !vBannerPodcast && /* @__PURE__ */ jsxRuntime.jsx(
852
+ BrandsStrip,
853
+ __spreadValues({
854
+ className: HeroBanner_module_default.brandsStrip,
855
+ variant: "light",
856
+ size: isTabletBelow || vMainHeroBanner ? "small" : void 0,
857
+ animate: animated
858
+ }, brands)
859
+ ),
860
+ backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: HeroBanner_module_default.backgroundImage }, backgroundImage))
861
+ ] }),
862
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: HeroBanner_module_default.horizontalGradient, children: [
863
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: HeroBanner_module_default.lensCrafters }),
864
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: HeroBanner_module_default.forEyes }),
865
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: HeroBanner_module_default.optical }),
866
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: HeroBanner_module_default.pearleVision })
501
867
  ] }),
502
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: CardCollection_module_default.wrapper, children: cards == null ? void 0 : cards.map((card, key) => /* @__PURE__ */ jsxRuntime.jsx(Card, __spreadValues({ className: CardCollection_module_default.card }, card), key)) })
868
+ !vBannerPodcast && /* @__PURE__ */ jsxRuntime.jsx("div", { className: HeroBanner_module_default.scrollDown, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { type: "downChevronBlack", className: HeroBanner_module_default.arrow }) })
869
+ ] });
870
+ };
871
+ var MiniBannerTitle = ({ children }) => {
872
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
873
+ };
874
+ var MiniBannerSubtitle = ({ children }) => {
875
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
876
+ };
877
+
878
+ // src/widgets/MiniBanner/MiniBanner.module.scss
879
+ var MiniBanner_module_default = {};
880
+ var MiniBanner = ({
881
+ className,
882
+ variant = "default",
883
+ title,
884
+ subtitle,
885
+ logo,
886
+ background,
887
+ children
888
+ }) => {
889
+ var _a, _b;
890
+ const slots = resolveCompoundSlots(children, {
891
+ title: MiniBannerTitle,
892
+ subtitle: MiniBannerSubtitle
893
+ });
894
+ const titleNode = (_a = slots.title) != null ? _a : title;
895
+ const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
896
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx3__default.default(MiniBanner_module_default.minibanner, MiniBanner_module_default[variant], className), children: [
897
+ background && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: MiniBanner_module_default.background }, background)),
898
+ /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: MiniBanner_module_default.container, children: [
899
+ logo && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: MiniBanner_module_default.logo }, logo)),
900
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h4", children: titleNode }),
901
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: variant === "miniBannerNoBG" ? "subheading" : "h1", children: subtitleNode })
902
+ ] })
503
903
  ] });
504
904
  };
505
905
 
906
+ // src/widgets/MiniBanner/index.ts
907
+ var MiniBanner2 = Object.assign(MiniBanner, {
908
+ Title: MiniBannerTitle,
909
+ Subtitle: MiniBannerSubtitle
910
+ });
911
+ var MiniSectionCtaTitle = ({ children }) => {
912
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
913
+ };
914
+ var MiniSectionCtaSubtitle = ({ children }) => {
915
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
916
+ };
917
+
506
918
  // src/widgets/MiniSectionCta/MiniSectionCta.module.scss
507
919
  var MiniSectionCta_module_default = {};
508
920
  var MiniSectionCta = ({
@@ -510,12 +922,20 @@ var MiniSectionCta = ({
510
922
  variant = "headerCTA",
511
923
  title,
512
924
  subtitle,
513
- cta
925
+ cta,
926
+ children
514
927
  }) => {
928
+ var _a, _b;
929
+ const slots = resolveCompoundSlots(children, {
930
+ title: MiniSectionCtaTitle,
931
+ subtitle: MiniSectionCtaSubtitle
932
+ });
933
+ const titleNode = (_a = slots.title) != null ? _a : title;
934
+ const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
515
935
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(MiniSectionCta_module_default.miniSectionCta, MiniSectionCta_module_default[variant], className), children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { className: MiniSectionCta_module_default.container, children: [
516
936
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: MiniSectionCta_module_default.col, children: [
517
- title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: variant === "BgColorBlack" || variant === "BgColorGrey" ? "h3" : "h2", children: title }),
518
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(MiniSectionCta_module_default.subtitle, variant === "infoCallout" ? "h4" : "subheading"), children: subtitle })
937
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: variant === "BgColorBlack" || variant === "BgColorGrey" ? "h3" : "h2", children: titleNode }),
938
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(MiniSectionCta_module_default.subtitle, variant === "infoCallout" ? "h4" : "subheading"), children: subtitleNode })
519
939
  ] }),
520
940
  cta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: MiniSectionCta_module_default.col, children: /* @__PURE__ */ jsxRuntime.jsx(
521
941
  Button,
@@ -523,7 +943,7 @@ var MiniSectionCta = ({
523
943
  className: MiniSectionCta_module_default.cta,
524
944
  href: cta.url,
525
945
  isExternal: cta.isExternal,
526
- variant: "primary",
946
+ variant: variant === "BgColorBlack" ? "shiny" : "primary",
527
947
  icon: variant === "miniTextCenterCta" ? "tiltedRightWhite" : void 0,
528
948
  children: cta.label
529
949
  }
@@ -531,6 +951,73 @@ var MiniSectionCta = ({
531
951
  ] }) });
532
952
  };
533
953
 
954
+ // src/widgets/MiniSectionCta/index.ts
955
+ var MiniSectionCta2 = Object.assign(MiniSectionCta, {
956
+ Title: MiniSectionCtaTitle,
957
+ Subtitle: MiniSectionCtaSubtitle
958
+ });
959
+ var PracticePathCardsFooter = ({ children }) => {
960
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
961
+ };
962
+ var PracticePathCardsSubtitle = ({ children }) => {
963
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
964
+ };
965
+ var PracticePathCardsTitle = ({ children }) => {
966
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
967
+ };
968
+
969
+ // src/widgets/PracticePathCards/PracticePathCards.module.scss
970
+ var PracticePathCards_module_default = {};
971
+ var PracticePathCards = ({
972
+ className,
973
+ children,
974
+ cards,
975
+ title,
976
+ subtitle,
977
+ footer,
978
+ cta
979
+ }) => {
980
+ var _a, _b, _c;
981
+ const slots = resolveCompoundSlots(children, {
982
+ title: PracticePathCardsTitle,
983
+ subtitle: PracticePathCardsSubtitle,
984
+ footer: PracticePathCardsFooter
985
+ });
986
+ const titleNode = (_a = slots.title) != null ? _a : title;
987
+ const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
988
+ const footerNode = (_c = slots.footer) != null ? _c : footer;
989
+ 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: [
990
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PracticePathCards_module_default.wrapper, children: [
991
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: PracticePathCards_module_default.content, children: [
992
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("h2", { children: titleNode }),
993
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "subheading", children: subtitleNode })
994
+ ] }),
995
+ (cta == null ? void 0 : cta.url) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: PracticePathCards_module_default.ctaWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(
996
+ Button,
997
+ {
998
+ className: PracticePathCards_module_default.cta,
999
+ variant: "secondary",
1000
+ href: cta.url,
1001
+ isExternal: cta == null ? void 0 : cta.isExternal,
1002
+ children: cta == null ? void 0 : cta.label
1003
+ }
1004
+ ) })
1005
+ ] }),
1006
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PracticePathCards_module_default.cards, children: cards == null ? void 0 : cards.map((card, key) => /* @__PURE__ */ jsxRuntime.jsx(PracticeCard, __spreadValues({ className: PracticePathCards_module_default.card }, card), key)) }),
1007
+ footerNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "smallest", children: footerNode })
1008
+ ] }) });
1009
+ };
1010
+
1011
+ // src/widgets/PracticePathCards/index.ts
1012
+ var PracticePathCards2 = Object.assign(PracticePathCards, {
1013
+ Title: PracticePathCardsTitle,
1014
+ Subtitle: PracticePathCardsSubtitle,
1015
+ Footer: PracticePathCardsFooter
1016
+ });
1017
+ var Teaser5050With3TextTitle = ({ children }) => {
1018
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
1019
+ };
1020
+
534
1021
  // src/widgets/Teaser5050With3Text/Teaser5050With3Text.module.scss
535
1022
  var Teaser5050With3Text_module_default = {};
536
1023
  var Teaser5050With3Text = ({
@@ -538,32 +1025,57 @@ var Teaser5050With3Text = ({
538
1025
  variant = "left",
539
1026
  title,
540
1027
  cards,
541
- image
1028
+ image,
1029
+ children
542
1030
  }) => {
1031
+ var _a;
1032
+ const slots = resolveCompoundSlots(children, {
1033
+ title: Teaser5050With3TextTitle
1034
+ });
1035
+ const titleNode = (_a = slots.title) != null ? _a : title;
543
1036
  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: [
544
- title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(Teaser5050With3Text_module_default.title, "h3"), children: title }),
1037
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(Teaser5050With3Text_module_default.title, "h3"), children: titleNode }),
545
1038
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Teaser5050With3Text_module_default.content, children: [
546
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: Teaser5050With3Text_module_default.cards, children: cards == null ? void 0 : cards.map((card, key) => /* @__PURE__ */ jsxRuntime.jsx(InfoCard, __spreadValues({}, card), key)) }),
1039
+ /* @__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)) }),
547
1040
  image && /* @__PURE__ */ jsxRuntime.jsx(Picture, __spreadValues({ className: Teaser5050With3Text_module_default.image }, image))
548
1041
  ] })
549
1042
  ] }) });
550
1043
  };
551
1044
 
1045
+ // src/widgets/Teaser5050With3Text/index.ts
1046
+ var Teaser5050With3Text2 = Object.assign(Teaser5050With3Text, {
1047
+ Title: Teaser5050With3TextTitle
1048
+ });
1049
+
552
1050
  // src/widgets/Teaser5050WithCta/Teaser5050WithCta.module.scss
553
1051
  var Teaser5050WithCta_module_default = {};
1052
+ var Teaser5050WithCtaTitle = ({ children }) => {
1053
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
1054
+ };
1055
+ var Teaser5050WithCtaSubtitle = ({ children }) => {
1056
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
1057
+ };
554
1058
  var Teaser5050WithCta = ({
555
1059
  className,
556
1060
  variant = "left",
557
1061
  title,
558
1062
  subtitle,
559
1063
  cta,
560
- image
1064
+ image,
1065
+ children
561
1066
  }) => {
1067
+ var _a, _b;
1068
+ const slots = resolveCompoundSlots(children, {
1069
+ title: Teaser5050WithCtaTitle,
1070
+ subtitle: Teaser5050WithCtaSubtitle
1071
+ });
1072
+ const titleNode = (_a = slots.title) != null ? _a : title;
1073
+ const subtitleNode = (_b = slots.subtitle) != null ? _b : subtitle;
562
1074
  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: [
563
1075
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Teaser5050WithCta_module_default.wrapper, children: [
564
1076
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Teaser5050WithCta_module_default.content, children: [
565
- title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(Teaser5050WithCta_module_default.title, "h3"), children: title }),
566
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "subheading", children: subtitle })
1077
+ titleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx3__default.default(Teaser5050WithCta_module_default.title, "h3"), children: titleNode }),
1078
+ subtitleNode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "subheading", children: subtitleNode })
567
1079
  ] }),
568
1080
  cta && /* @__PURE__ */ jsxRuntime.jsx(
569
1081
  Button,
@@ -581,18 +1093,24 @@ var Teaser5050WithCta = ({
581
1093
  };
582
1094
 
583
1095
  exports.Anchor = Anchor;
1096
+ exports.BrandsStrip = BrandsStrip;
584
1097
  exports.Button = Button;
585
- exports.Card = Card;
586
- exports.CardCollection = CardCollection;
1098
+ exports.Card = Card2;
1099
+ exports.CardCollection = CardCollection2;
587
1100
  exports.ConditionalWrapper = ConditionalWrapper;
1101
+ exports.ContactModule = ContactModule2;
588
1102
  exports.Container = Container;
589
- exports.CountingCard = CountingCard;
1103
+ exports.CountingCard = CountingCard2;
1104
+ exports.HeroBanner = HeroBanner;
590
1105
  exports.Icon = Icon;
591
- exports.InfoCard = InfoCard;
592
- exports.MiniSectionCta = MiniSectionCta;
1106
+ exports.InfoCard = InfoCard2;
1107
+ exports.MiniBanner = MiniBanner2;
1108
+ exports.MiniSectionCta = MiniSectionCta2;
593
1109
  exports.Pagination = Pagination;
594
1110
  exports.Picture = Picture;
595
- exports.Teaser5050With3Text = Teaser5050With3Text;
1111
+ exports.PracticeCard = PracticeCard;
1112
+ exports.PracticePathCards = PracticePathCards2;
1113
+ exports.Teaser5050With3Text = Teaser5050With3Text2;
596
1114
  exports.Teaser5050WithCta = Teaser5050WithCta;
597
1115
  exports.svgs = svgs;
598
1116
  //# sourceMappingURL=index.cjs.map