@odx/websites-react 1.1.8 → 1.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/components/actions/button/Button.js +1 -1
  2. package/dist/components/actions/button/Button.js.map +1 -1
  3. package/dist/components/actions/formField/FormField.d.ts.map +1 -1
  4. package/dist/components/actions/formField/FormField.js +2 -2
  5. package/dist/components/actions/formField/FormField.js.map +1 -1
  6. package/dist/components/index.d.ts +1 -0
  7. package/dist/components/index.d.ts.map +1 -1
  8. package/dist/components/index.js +1 -0
  9. package/dist/components/index.js.map +1 -1
  10. package/dist/components/layout/cardCarousel/CardCarousel.d.ts.map +1 -1
  11. package/dist/components/layout/cardCarousel/CardCarousel.js +9 -48
  12. package/dist/components/layout/cardCarousel/CardCarousel.js.map +1 -1
  13. package/dist/components/layout/modal/Modal.d.ts +6 -14
  14. package/dist/components/layout/modal/Modal.d.ts.map +1 -1
  15. package/dist/components/layout/modal/Modal.js +13 -25
  16. package/dist/components/layout/modal/Modal.js.map +1 -1
  17. package/dist/components/layout/text/SlimRichText.d.ts +1 -1
  18. package/dist/components/layout/text/SlimRichText.d.ts.map +1 -1
  19. package/dist/components/navigation/tableOfContent/TableOfContent.d.ts +13 -0
  20. package/dist/components/navigation/tableOfContent/TableOfContent.d.ts.map +1 -0
  21. package/dist/components/navigation/tableOfContent/TableOfContent.js +24 -0
  22. package/dist/components/navigation/tableOfContent/TableOfContent.js.map +1 -0
  23. package/dist/components/navigation/tableOfContent/index.d.ts +2 -0
  24. package/dist/components/navigation/tableOfContent/index.d.ts.map +1 -0
  25. package/dist/components/navigation/tableOfContent/index.js +2 -0
  26. package/dist/components/navigation/tableOfContent/index.js.map +1 -0
  27. package/dist/components/typography/bodyText/BodyText.d.ts.map +1 -1
  28. package/dist/components/typography/bodyText/BodyText.js +1 -1
  29. package/dist/components/typography/bodyText/BodyText.js.map +1 -1
  30. package/dist/hooks/emblaCarousel/usePrevNextButtons.d.ts +11 -0
  31. package/dist/hooks/emblaCarousel/usePrevNextButtons.d.ts.map +1 -0
  32. package/dist/hooks/emblaCarousel/usePrevNextButtons.js +36 -0
  33. package/dist/hooks/emblaCarousel/usePrevNextButtons.js.map +1 -0
  34. package/dist/web/index.d.ts +4 -0
  35. package/dist/web/index.d.ts.map +1 -1
  36. package/dist/web/index.js +4 -0
  37. package/dist/web/index.js.map +1 -1
  38. package/dist/web/product/productAccessories/ProductAccessoryCard.d.ts +21 -0
  39. package/dist/web/product/productAccessories/ProductAccessoryCard.d.ts.map +1 -0
  40. package/dist/web/product/productAccessories/ProductAccessoryCard.js +18 -0
  41. package/dist/web/product/productAccessories/ProductAccessoryCard.js.map +1 -0
  42. package/dist/web/product/productAccessories/ProductSystemBox.d.ts +11 -0
  43. package/dist/web/product/productAccessories/ProductSystemBox.d.ts.map +1 -0
  44. package/dist/web/product/productAccessories/ProductSystemBox.js +47 -0
  45. package/dist/web/product/productAccessories/ProductSystemBox.js.map +1 -0
  46. package/dist/web/product/productAccessories/index.d.ts +3 -0
  47. package/dist/web/product/productAccessories/index.d.ts.map +1 -0
  48. package/dist/web/product/productAccessories/index.js +3 -0
  49. package/dist/web/product/productAccessories/index.js.map +1 -0
  50. package/dist/web/product/productBenefits/CardElipsis.d.ts +7 -0
  51. package/dist/web/product/productBenefits/CardElipsis.d.ts.map +1 -0
  52. package/dist/web/product/productBenefits/CardElipsis.js +9 -0
  53. package/dist/web/product/productBenefits/CardElipsis.js.map +1 -0
  54. package/dist/web/product/productBenefits/ProductBenefitSingleItem.d.ts +12 -0
  55. package/dist/web/product/productBenefits/ProductBenefitSingleItem.d.ts.map +1 -0
  56. package/dist/web/product/productBenefits/ProductBenefitSingleItem.js +12 -0
  57. package/dist/web/product/productBenefits/ProductBenefitSingleItem.js.map +1 -0
  58. package/dist/web/product/productBenefits/ProductBenefits.d.ts +14 -0
  59. package/dist/web/product/productBenefits/ProductBenefits.d.ts.map +1 -0
  60. package/dist/web/product/productBenefits/ProductBenefits.js +66 -0
  61. package/dist/web/product/productBenefits/ProductBenefits.js.map +1 -0
  62. package/dist/web/product/productBenefits/index.d.ts +3 -0
  63. package/dist/web/product/productBenefits/index.d.ts.map +1 -0
  64. package/dist/web/product/productBenefits/index.js +3 -0
  65. package/dist/web/product/productBenefits/index.js.map +1 -0
  66. package/dist/web/productFinder/contentSwitch/ContentSwitch.d.ts +27 -0
  67. package/dist/web/productFinder/contentSwitch/ContentSwitch.d.ts.map +1 -0
  68. package/dist/web/productFinder/contentSwitch/ContentSwitch.js +73 -0
  69. package/dist/web/productFinder/contentSwitch/ContentSwitch.js.map +1 -0
  70. package/dist/web/productFinder/contentSwitch/index.d.ts +2 -0
  71. package/dist/web/productFinder/contentSwitch/index.d.ts.map +1 -0
  72. package/dist/web/productFinder/contentSwitch/index.js +2 -0
  73. package/dist/web/productFinder/contentSwitch/index.js.map +1 -0
  74. package/dist/web/productFinder/stageSection/ProductFinderStageSection.d.ts +27 -0
  75. package/dist/web/productFinder/stageSection/ProductFinderStageSection.d.ts.map +1 -0
  76. package/dist/web/productFinder/stageSection/ProductFinderStageSection.js +48 -0
  77. package/dist/web/productFinder/stageSection/ProductFinderStageSection.js.map +1 -0
  78. package/dist/web/productFinder/stageSection/index.d.ts +2 -0
  79. package/dist/web/productFinder/stageSection/index.d.ts.map +1 -0
  80. package/dist/web/productFinder/stageSection/index.js +2 -0
  81. package/dist/web/productFinder/stageSection/index.js.map +1 -0
  82. package/package.json +63 -7
package/dist/web/index.js CHANGED
@@ -19,8 +19,12 @@ export * from './productFinder/productFinderSection';
19
19
  export * from './productFinder/filter';
20
20
  export * from './productFinder/overview';
21
21
  export * from './productFinder/navigation';
22
+ export * from './productFinder/contentSwitch';
23
+ export * from './productFinder/stageSection';
22
24
  /**
23
25
  * Product page components
24
26
  */
27
+ export * from './product/productBenefits';
28
+ export * from './product/productAccessories';
25
29
  export * from './product/productInfoBlock';
26
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AAEzC;;GAEG;AACH,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AAExC;;GAEG;AACH,cAAc,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAE3C;;GAEG;AACH,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AAEzC;;GAEG;AACH,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AAExC;;GAEG;AACH,cAAc,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAE7C;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import { type ButtonProps, type HeadlineProps, type ImageProps, type LinkButtonProps } from '../../../components';
3
+ export interface ProductAccessoryCardRequestButtonProps extends Omit<ButtonProps, 'variant' | 'iconLeft' | 'size'> {
4
+ }
5
+ declare const ProductAccessoryCardRequestButton: React.FC<ProductAccessoryCardRequestButtonProps>;
6
+ export interface ProductAccessoryCardInfoButtoLinknProps extends Omit<LinkButtonProps, 'variant' | 'iconLeft' | 'iconRight' | 'size'> {
7
+ }
8
+ declare const ProductAccessoryCardInfoLinkButton: React.FC<ProductAccessoryCardInfoButtoLinknProps>;
9
+ export interface ProductAccessoryCardProps {
10
+ image?: Omit<ImageProps, 'ratio'>;
11
+ title: string;
12
+ description: string;
13
+ expandLabel?: string;
14
+ headlineActAs?: HeadlineProps['actAs'];
15
+ children?: React.ReactNode;
16
+ addToRequestButton?: React.ReactNode;
17
+ moreInfoButton?: React.ReactNode;
18
+ }
19
+ declare const ProductAccessoryCard: React.FC<ProductAccessoryCardProps>;
20
+ export { ProductAccessoryCard, ProductAccessoryCardRequestButton, ProductAccessoryCardInfoLinkButton, };
21
+ //# sourceMappingURL=ProductAccessoryCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductAccessoryCard.d.ts","sourceRoot":"","sources":["../../../../src/web/product/productAccessories/ProductAccessoryCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EASL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAI7B,MAAM,WAAW,sCACf,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;CAAG;AAE/D,QAAA,MAAM,iCAAiC,EAAE,KAAK,CAAC,EAAE,CAC/C,sCAAsC,CAUvC,CAAC;AAEF,MAAM,WAAW,uCACf,SAAQ,IAAI,CACV,eAAe,EACf,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAC9C;CAAG;AAEN,QAAA,MAAM,kCAAkC,EAAE,KAAK,CAAC,EAAE,CAChD,uCAAuC,CAKxC,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAClC;AAED,QAAA,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAiD7D,CAAC;AAEF,OAAO,EACL,oBAAoB,EACpB,iCAAiC,EACjC,kCAAkC,GACnC,CAAC"}
@@ -0,0 +1,18 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { Headline, SlimRichText, Image, Modal, ModalBody, Button, Icon, LinkButton, } from '../../../components';
5
+ import { cn } from '../../../utils';
6
+ import { CardElipsis } from '../productBenefits/CardElipsis';
7
+ const ProductAccessoryCardRequestButton = ({ ...props }) => {
8
+ return (_jsx(Button, { size: 'sm', variant: 'secondary', iconLeft: _jsx(Icon, { name: "core::plus", size: 'md' }), ...props }));
9
+ };
10
+ const ProductAccessoryCardInfoLinkButton = ({ ...props }) => {
11
+ return (_jsx(LinkButton, { size: 'sm', variant: 'ghost', ...props, iconLeft: undefined }));
12
+ };
13
+ const ProductAccessoryCard = ({ image, title, description, expandLabel = '\u2026', headlineActAs, addToRequestButton, moreInfoButton, }) => {
14
+ const [isOpen, setOpen] = React.useState(false);
15
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex flex-col gap-2", children: [image && _jsx(Image, { ratio: '4/3', ...image }), _jsx(Headline, { headingLevel: "h5", spacingBottom: false, actAs: headlineActAs, children: title }), _jsx(SlimRichText, { text: description, maxLength: 150, bottomSpacing: false, ellipsis: _jsx(CardElipsis, { expandLabel: expandLabel, setOpen: setOpen }) }), addToRequestButton && (_jsx("div", { className: "self-start pt-2", children: addToRequestButton }))] }), _jsxs(Modal, { open: isOpen, onOpenChange: setOpen, canClose: true, headline: title, children: [_jsx(ModalBody, { children: _jsxs("div", { className: "flex flex-col gap-4", children: [image && (_jsx(Image, { className: cn('basis-1/2', image.className), ratio: '4/3', ...image })), _jsx(SlimRichText, { text: description, bottomSpacing: false })] }) }), _jsxs("div", { className: "flex flex-col items-center gap-3 pt-6", children: [addToRequestButton, moreInfoButton] })] })] }));
16
+ };
17
+ export { ProductAccessoryCard, ProductAccessoryCardRequestButton, ProductAccessoryCardInfoLinkButton, };
18
+ //# sourceMappingURL=ProductAccessoryCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductAccessoryCard.js","sourceRoot":"","sources":["../../../../src/web/product/productAccessories/ProductAccessoryCard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,KAAK,EACL,SAAS,EACT,MAAM,EACN,IAAI,EACJ,UAAU,GAKX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAC,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAK3D,MAAM,iCAAiC,GAEnC,CAAC,EAAC,GAAG,KAAK,EAAC,EAAE,EAAE;IACjB,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAE,IAAI,GAAI,KAC5C,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CAAC;AAQF,MAAM,kCAAkC,GAEpC,CAAC,EAAC,GAAG,KAAK,EAAC,EAAE,EAAE;IACjB,OAAO,CACL,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,KAAM,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAC7E,CAAC;AACJ,CAAC,CAAC;AAaF,MAAM,oBAAoB,GAAwC,CAAC,EACjE,KAAK,EACL,KAAK,EACL,WAAW,EACX,WAAW,GAAG,QAAQ,EACtB,aAAa,EACb,kBAAkB,EAClB,cAAc,GACf,EAAE,EAAE;IACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,OAAO,CACL,8BACE,eAAK,SAAS,EAAC,qBAAqB,aACjC,KAAK,IAAI,KAAC,KAAK,IAAC,KAAK,EAAE,KAAK,KAAM,KAAK,GAAI,EAE5C,KAAC,QAAQ,IAAC,YAAY,EAAC,IAAI,EAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,YACnE,KAAK,GACG,EACX,KAAC,YAAY,IACX,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,GAAG,EACd,aAAa,EAAE,KAAK,EACpB,QAAQ,EAAE,KAAC,WAAW,IAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAI,GACrE,EACD,kBAAkB,IAAI,CACrB,cAAK,SAAS,EAAC,iBAAiB,YAAE,kBAAkB,GAAO,CAC5D,IACG,EACN,MAAC,KAAK,IAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,QAAC,QAAQ,EAAE,KAAK,aAClE,KAAC,SAAS,cACR,eAAK,SAAS,EAAC,qBAAqB,aACjC,KAAK,IAAI,CACR,KAAC,KAAK,IACJ,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,EAC3C,KAAK,EAAE,KAAK,KACR,KAAK,GACT,CACH,EACD,KAAC,YAAY,IAAC,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,GAAI,IACrD,GACI,EACZ,eAAK,SAAS,EAAC,uCAAuC,aACnD,kBAAkB,EAClB,cAAc,IACX,IACA,IACP,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EACL,oBAAoB,EACpB,iCAAiC,EACjC,kCAAkC,GACnC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ import { type HeadlineProps } from '../../../components';
3
+ export interface ProductSystemBoxProps {
4
+ children?: React.ReactNode;
5
+ headline?: string;
6
+ headlineActAs?: HeadlineProps['actAs'];
7
+ text?: string;
8
+ }
9
+ declare const ProductSystemBox: React.FC<ProductSystemBoxProps>;
10
+ export { ProductSystemBox };
11
+ //# sourceMappingURL=ProductSystemBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductSystemBox.d.ts","sourceRoot":"","sources":["../../../../src/web/product/productAccessories/ProductSystemBox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAM7B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAUD,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAmErD,CAAC;AAEF,OAAO,EAAC,gBAAgB,EAAC,CAAC"}
@@ -0,0 +1,47 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import useEmblaCarousel from 'embla-carousel-react';
5
+ import { cn } from '../../../utils';
6
+ import { BlockGrid, BlockChildrenWidthContainer, Headline, SlimRichText, } from '../../../components';
7
+ import { useSelectedSnapDisplay } from '../../../hooks/emblaCarousel/useSelectedSnapDisplay';
8
+ import { usePrevNextButtons } from '../../../hooks/emblaCarousel/usePrevNextButtons';
9
+ import { getThemeBreakpoints } from '../../../utils/breakpoints';
10
+ import { CarouselControl } from '../../../components/common/carouselControl';
11
+ const breakpoints = getThemeBreakpoints();
12
+ const scrollabelContainerClasses = `
13
+ flex -ml-6 lg:-ml-0
14
+ touch-pan-y touch-pinch-zoom
15
+ lg:grid lg:grid-cols-2 lg:gap-x-6 lg:gap-y-11 xl:grid-cols-3
16
+ `;
17
+ const ProductSystemBox = ({ children, headline, text, headlineActAs, }) => {
18
+ const [carouselRef, emblaApi] = useEmblaCarousel({
19
+ align: 'start',
20
+ slidesToScroll: 1,
21
+ containScroll: 'keepSnaps',
22
+ watchDrag: true,
23
+ breakpoints: {
24
+ [`(min-width: ${breakpoints.md.min})`]: { slidesToScroll: 2 },
25
+ [`(min-width: ${breakpoints.lg.min})`]: {
26
+ dragFree: false,
27
+ watchDrag: false,
28
+ },
29
+ },
30
+ });
31
+ const { selectedSnap, snapCount } = useSelectedSnapDisplay(emblaApi);
32
+ const { canScrollNext, canScrollPrev, scrollPrev, scrollNext } = usePrevNextButtons(emblaApi);
33
+ const childNodesArray = React.Children.toArray(children);
34
+ if (!childNodesArray.length)
35
+ return;
36
+ return (_jsxs(BlockGrid, { children: [(headline || text) && (_jsxs(BlockChildrenWidthContainer, { className: "xl:max-w-[80%]", children: [_jsx(Headline, { headingLevel: "h3", actAs: headlineActAs, children: headline }), _jsx(SlimRichText, { text: text })] })), _jsxs(BlockChildrenWidthContainer, { children: [_jsx("div", { ref: carouselRef, className: cn('overflow-hidden'), children: _jsx("div", { className: cn(scrollabelContainerClasses), children: childNodesArray.map((child, index) => (_jsx("div", { className: "flex-[0_0] basis-full md:basis-1/2 min-w-0 pl-6 lg:pl-0", children: child }, index))) }) }), snapCount > 1 && (_jsx(CarouselControl, { counterText: `${selectedSnap + 1}/${snapCount}`, prevButtonProps: {
37
+ disabled: !canScrollPrev,
38
+ onClick: scrollPrev,
39
+ ariaLabel: 'previousButtonAriaLabel',
40
+ }, nextButtonProps: {
41
+ disabled: !canScrollNext,
42
+ onClick: scrollNext,
43
+ ariaLabel: 'nextButtonAriaLabel',
44
+ } }))] })] }));
45
+ };
46
+ export { ProductSystemBox };
47
+ //# sourceMappingURL=ProductSystemBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductSystemBox.js","sourceRoot":"","sources":["../../../../src/web/product/productAccessories/ProductSystemBox.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './ProductAccessoryCard';
2
+ export * from './ProductSystemBox';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/web/product/productAccessories/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './ProductAccessoryCard';
2
+ export * from './ProductSystemBox';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/web/product/productAccessories/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface CardElipsisProps {
2
+ expandLabel?: string;
3
+ setOpen: (open: boolean) => void;
4
+ }
5
+ declare const CardElipsis: React.FC<CardElipsisProps>;
6
+ export { CardElipsis };
7
+ //# sourceMappingURL=CardElipsis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardElipsis.d.ts","sourceRoot":"","sources":["../../../../src/web/product/productBenefits/CardElipsis.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAoBzC,CAAC;AAEJ,OAAO,EAAC,WAAW,EAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Link } from '../../../components';
3
+ const CardElipsis = ({ expandLabel, setOpen }) => expandLabel && (_jsxs(_Fragment, { children: ["\u00A0", _jsx(Link, { className: "cursor-pointer", role: "button", LinkComponent: props => _jsx("span", { ...props }), href: undefined, display: 'inline', onKeyDown: e => {
4
+ if (e.key === 'Enter' || e.key === ' ' || e.key === 'Space') {
5
+ setOpen(true);
6
+ }
7
+ }, onClick: () => setOpen(true), children: expandLabel })] }));
8
+ export { CardElipsis };
9
+ //# sourceMappingURL=CardElipsis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardElipsis.js","sourceRoot":"","sources":["../../../../src/web/product/productBenefits/CardElipsis.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,qBAAqB,CAAC;AAOzC,MAAM,WAAW,GAA+B,CAAC,EAAC,WAAW,EAAE,OAAO,EAAC,EAAE,EAAE,CACzE,WAAW,IAAI,CACb,wCAEE,KAAC,IAAI,IACH,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EAAC,QAAQ,EACb,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAU,KAAK,GAAI,EAC3C,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,CAAC,CAAC,EAAE;gBACb,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;oBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YAE3B,WAAW,GACP,IACN,CACJ,CAAC;AAEJ,OAAO,EAAC,WAAW,EAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import { type HeadlineProps, type ImageProps } from '../../../components';
3
+ export interface ProductBenefitSingleItemProps {
4
+ image?: Omit<ImageProps, 'ratio'>;
5
+ title: string;
6
+ description: string;
7
+ expandLabel?: string;
8
+ headlineActAs?: HeadlineProps['actAs'];
9
+ }
10
+ declare const ProductBenefitSingleItem: React.FC<ProductBenefitSingleItemProps>;
11
+ export { ProductBenefitSingleItem };
12
+ //# sourceMappingURL=ProductBenefitSingleItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductBenefitSingleItem.d.ts","sourceRoot":"","sources":["../../../../src/web/product/productBenefits/ProductBenefitSingleItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAI7B,MAAM,WAAW,6BAA6B;IAC5C,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACxC;AAED,QAAA,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CA0DrE,CAAC;AAEF,OAAO,EAAC,wBAAwB,EAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { Headline, SlimRichText, Image, Modal, ModalBody, } from '../../../components';
5
+ import { cn } from '../../../utils';
6
+ import { CardElipsis } from './CardElipsis';
7
+ const ProductBenefitSingleItem = ({ image, title, description, expandLabel = '\u2026', headlineActAs, }) => {
8
+ const [isOpen, setOpen] = React.useState(false);
9
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex flex-col-reverse gap-4", "data-benefit-single-item": true, children: [_jsxs("div", { className: cn('flex flex-col self-center gap-2', image && 'basis-1/2'), children: [_jsx(Headline, { headingLevel: "h4", spacingBottom: false, actAs: headlineActAs, children: title }), _jsx(SlimRichText, { text: description, maxLength: 150, bottomSpacing: false, ellipsis: _jsx(CardElipsis, { expandLabel: expandLabel, setOpen: setOpen }) })] }), image && (_jsx(Image, { className: cn('basis-1/2', image.className), ratio: '4/3', ...image }))] }), _jsx(Modal, { open: isOpen, onOpenChange: setOpen, canClose: true, headline: title, children: _jsx(ModalBody, { children: _jsxs("div", { className: "flex flex-col gap-4", children: [image && (_jsx(Image, { className: cn('basis-1/2', image.className), ratio: '4/3', ...image })), _jsx(SlimRichText, { text: description, bottomSpacing: false })] }) }) })] }));
10
+ };
11
+ export { ProductBenefitSingleItem };
12
+ //# sourceMappingURL=ProductBenefitSingleItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductBenefitSingleItem.js","sourceRoot":"","sources":["../../../../src/web/product/productBenefits/ProductBenefitSingleItem.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,KAAK,EACL,SAAS,GAGV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAU1C,MAAM,wBAAwB,GAA4C,CAAC,EACzE,KAAK,EACL,KAAK,EACL,WAAW,EACX,WAAW,GAAG,QAAQ,EACtB,aAAa,GACd,EAAE,EAAE;IACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,OAAO,CACL,8BACE,eAAK,SAAS,EAAC,6BAA6B,+CAC1C,eACE,SAAS,EAAE,EAAE,CACX,iCAAiC,EACjC,KAAK,IAAI,WAAW,CACrB,aAED,KAAC,QAAQ,IACP,YAAY,EAAC,IAAI,EACjB,aAAa,EAAE,KAAK,EACpB,KAAK,EAAE,aAAa,YAEnB,KAAK,GACG,EACX,KAAC,YAAY,IACX,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,GAAG,EACd,aAAa,EAAE,KAAK,EACpB,QAAQ,EACN,KAAC,WAAW,IAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAI,GAE7D,IACE,EACL,KAAK,IAAI,CACR,KAAC,KAAK,IACJ,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,EAC3C,KAAK,EAAE,KAAK,KACR,KAAK,GACT,CACH,IACG,EACN,KAAC,KAAK,IAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,QAAC,QAAQ,EAAE,KAAK,YAClE,KAAC,SAAS,cACR,eAAK,SAAS,EAAC,qBAAqB,aACjC,KAAK,IAAI,CACR,KAAC,KAAK,IACJ,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,EAC3C,KAAK,EAAE,KAAK,KACR,KAAK,GACT,CACH,EACD,KAAC,YAAY,IAAC,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,GAAI,IACrD,GACI,GACN,IACP,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAC,wBAAwB,EAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+ import { type HeadlineProps } from '../../../components';
3
+ export interface ProductBenefitsContainerProps {
4
+ children?: React.ReactNode;
5
+ headline?: string;
6
+ headlineActAs?: HeadlineProps['actAs'];
7
+ text?: string;
8
+ }
9
+ declare const ProductBenefitsContainer: React.FC<ProductBenefitsContainerProps>;
10
+ export interface ProductBenefitsProps extends React.HTMLAttributes<HTMLDivElement> {
11
+ }
12
+ declare const ProductBenefits: React.FC<ProductBenefitsProps>;
13
+ export { ProductBenefits, ProductBenefitsContainer };
14
+ //# sourceMappingURL=ProductBenefits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductBenefits.d.ts","sourceRoot":"","sources":["../../../../src/web/product/productBenefits/ProductBenefits.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,QAAA,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAqBrE,CAAC;AAEF,MAAM,WAAW,oBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAoDjD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAgCnD,CAAC;AAEF,OAAO,EAAC,eAAe,EAAE,wBAAwB,EAAC,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../../../utils';
4
+ import { BlockChildrenWidthContainer, BlockGrid, Headline, SlimRichText, } from '../../../components';
5
+ const ProductBenefitsContainer = ({ children, headline, text, headlineActAs, }) => {
6
+ return (_jsxs(BlockGrid, { children: [(headline || text) && (_jsxs(BlockChildrenWidthContainer, { elementWidth: 'narrow', children: [_jsx(Headline, { headingLevel: "h3", actAs: headlineActAs, children: headline }), _jsx(SlimRichText, { text: text })] })), _jsx(BlockChildrenWidthContainer, { children: _jsx("div", { className: "flex flex-col gap-11", children: children }) })] }));
7
+ };
8
+ const rowTemplates = {
9
+ 1: [1],
10
+ 2: [2],
11
+ 3: [3],
12
+ 4: [1, 3],
13
+ 5: [2, 3],
14
+ 6: [3, 3],
15
+ 7: [2, 2, 3],
16
+ 8: [2, 3, 3],
17
+ 9: [3, 3, 3],
18
+ 10: [2, 2, 3, 3],
19
+ 11: [2, 3, 3, 3],
20
+ 12: [3, 3, 3, 3],
21
+ 13: [2, 2, 3, 3, 3],
22
+ 14: [2, 3, 3, 3, 3],
23
+ 15: [3, 3, 3, 3, 3],
24
+ };
25
+ const getChildrenRows = (children) => {
26
+ const childrenArray = React.Children.toArray(children);
27
+ const childrenCount = childrenArray.length;
28
+ if (childrenCount === 0)
29
+ return [];
30
+ let rowTemplate = [];
31
+ // If childrenCount is greater than 15, combine the first 15 elements
32
+ // into rows array based on the rowsTemplate
33
+ // futher elements will take 3 columns
34
+ if (childrenCount > 15) {
35
+ const firstRowsElementsCount = (childrenCount %
36
+ 15);
37
+ const restRowsElementsCount = childrenCount - firstRowsElementsCount;
38
+ rowTemplate = [
39
+ ...rowTemplates[firstRowsElementsCount],
40
+ ...Array.from({ length: restRowsElementsCount }).fill(3),
41
+ ];
42
+ }
43
+ else
44
+ rowTemplate = rowTemplates[childrenCount];
45
+ const rows = [];
46
+ let startIndex = 0;
47
+ for (const columns of rowTemplate) {
48
+ const row = childrenArray.slice(startIndex, startIndex + columns);
49
+ rows.push(row);
50
+ startIndex += columns;
51
+ }
52
+ return rows;
53
+ };
54
+ const ProductBenefits = ({ children, ...props }) => {
55
+ const childrenRows = getChildrenRows(children);
56
+ const cols = {
57
+ 1: 'xl:grid-cols-1 lg:[&_[data-benefit-single-item=true]:first-child]:[grid-column:span_2/span_2] xl:[&_[data-benefit-single-item=true]:first-child]:[grid-column:unset]',
58
+ 2: 'xl:grid-cols-2',
59
+ 3: 'xl:grid-cols-3 lg:[&_[data-benefit-single-item=true]:first-child]:[grid-column:span_3/span_3] xl:[&_[data-benefit-single-item=true]:first-child]:[grid-column:unset]',
60
+ };
61
+ return (_jsx("div", { children: _jsx("div", { className: cn('flex flex-col gap-6 gap-y-11'), ...props, children: childrenRows.map((row, index) => (_jsx("div", { className: cn('grid grid-cols-1 lg:grid-cols-2 gap-4 lg:gap-6', row.length === 1 &&
62
+ 'xl:[&_[data-benefit-single-item=true]]:flex-row', cols[row.length], row.length === 1 &&
63
+ 'xl:[&_[data-benefit-single-item=true]:not(:has(img))]:max-w-[75%]'), children: row }, index))) }) }));
64
+ };
65
+ export { ProductBenefits, ProductBenefitsContainer };
66
+ //# sourceMappingURL=ProductBenefits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductBenefits.js","sourceRoot":"","sources":["../../../../src/web/product/productBenefits/ProductBenefits.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './ProductBenefitSingleItem';
2
+ export * from './ProductBenefits';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/web/product/productBenefits/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './ProductBenefitSingleItem';
2
+ export * from './ProductBenefits';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/web/product/productBenefits/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import * as React from 'react';
2
+ import { type LinkButtonProps } from '../../../components';
3
+ export interface ContentSwitchProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ children?: React.ReactNode;
5
+ }
6
+ export interface ContentSwitchTabProps extends React.HTMLAttributes<HTMLButtonElement> {
7
+ active?: boolean;
8
+ icon?: React.ReactNode;
9
+ }
10
+ declare const ContentSwitchTab: React.FC<ContentSwitchTabProps>;
11
+ export interface ContentSwitchLinkButtonProps extends Omit<LinkButtonProps, 'variant' | 'size'> {
12
+ }
13
+ declare const ContentSwitchLinkButton: React.FC<ContentSwitchLinkButtonProps>;
14
+ export interface ContentSwitchTabsProps extends React.HTMLAttributes<HTMLDivElement> {
15
+ children?: React.ReactNode;
16
+ }
17
+ declare const ContentSwitchTabs: React.FC<ContentSwitchTabsProps>;
18
+ export interface ContentSwitchCategoryLabelProps {
19
+ label?: string;
20
+ }
21
+ declare const ContentSwitchCategoryLabel: React.FC<ContentSwitchCategoryLabelProps>;
22
+ export interface ContentSwitchDividerProps {
23
+ }
24
+ declare const ContentSwitchDivider: React.FC<ContentSwitchDividerProps>;
25
+ declare const ContentSwitch: React.FC<ContentSwitchProps>;
26
+ export { ContentSwitch, ContentSwitchTabs, ContentSwitchTab, ContentSwitchLinkButton, ContentSwitchCategoryLabel, ContentSwitchDivider, };
27
+ //# sourceMappingURL=ContentSwitch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentSwitch.d.ts","sourceRoot":"","sources":["../../../../src/web/productFinder/contentSwitch/ContentSwitch.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAuB,KAAK,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAU/E,MAAM,WAAW,kBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAOD,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AASD,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAkCrD,CAAC;AAEF,MAAM,WAAW,4BACf,SAAQ,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,MAAM,CAAC;CAAG;AAEtD,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAiBnE,CAAC;AAEF,MAAM,WAAW,sBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAQD,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAqBvD,CAAC;AAEF,MAAM,WAAW,+BAA+B;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAazE,CAAC;AAEF,MAAM,WAAW,yBAAyB;CAAG;AAE7C,QAAA,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAE7D,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAyD/C,CAAC;AAEF,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,GACrB,CAAC"}
@@ -0,0 +1,73 @@
1
+ 'use client';
2
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { Transition } from '@headlessui/react';
5
+ import { BodyText, LinkButton } from '../../../components';
6
+ import { useElementSize } from '../../../hooks/useElementSize';
7
+ import { cn } from '../../../utils';
8
+ import { useBreakpoint } from '../../../hooks';
9
+ const StickyContext = React.createContext({
10
+ isSticky: false,
11
+ isStatic: true,
12
+ });
13
+ const contentSwitchClasses = `
14
+ font-text p-1.5 rounded-sm z-10 transition-all
15
+ flex gap-1 items-center lg:gap-4 flex-col lg:flex-row
16
+ `;
17
+ const contentSwitchTabClasses = `
18
+ relative rounded-full min-w-11 px-4 ease-in-out w-full lg:w-auto min-h-11 lg:min-h-element-height-lg outline-none
19
+ before:content-[""] before:absolute before:inset-0 before:rounded-full
20
+ before:outline before:outline-none before:focus:outline-border-accent
21
+ before:transition-all before:duration-150
22
+ `;
23
+ const ContentSwitchTab = ({ children, active, icon, className, ...props }) => {
24
+ const { isSticky, isStatic } = React.useContext(StickyContext);
25
+ return (_jsx("button", { className: cn(contentSwitchTabClasses, active
26
+ ? 'before:bg-surface-brand before:hover:bg-interactions-brand-hover'
27
+ : 'before:bg-surface-primary before:hover:bg-field-hover', active &&
28
+ 'first:before:animate-draeger-switch-button-right last:before:animate-draeger-switch-button-left before:z-10', className), tabIndex: isSticky && isStatic ? -1 : undefined, ...props, children: _jsxs("span", { className: cn('relative flex items-center justify-center gap-1 transition-all z-10', active ? 'text-text-invert' : 'text-text-primary'), children: [icon, children] }) }));
29
+ };
30
+ const ContentSwitchLinkButton = ({ iconLeft, ...props }) => {
31
+ const { isSticky, isStatic } = React.useContext(StickyContext);
32
+ const isMobilde = useBreakpoint('lg');
33
+ return (_jsx(LinkButton, { iconLeft: iconLeft, size: isMobilde ? 'md' : 'lg', variant: 'ghost', className: cn('shrink-0', !isStatic && 'invisible lg:visible'), tabIndex: isSticky && isStatic ? -1 : undefined, ...props }));
34
+ };
35
+ const contentSwitchTabsClasses = `
36
+ bg-surface-primary min-h-14 p-1.5 w-full rounded-full lg:w-auto transition-all overflow-hidden duration-300
37
+ flex justify-center gap-1.5
38
+ border border-border-primary
39
+ `;
40
+ const ContentSwitchTabs = ({ children, className, ...props }) => {
41
+ const { isSticky } = React.useContext(StickyContext);
42
+ return (_jsxs("div", { className: cn(className), ...props, children: [_jsx("div", { className: cn(contentSwitchTabsClasses, isSticky && 'shadow-draeger-elevation-2 lg:shadow-none'), children: children }), _jsx("div", { className: "self-stretch w-px bg-miscellaneous-divider" })] }));
43
+ };
44
+ const ContentSwitchCategoryLabel = ({ label, }) => {
45
+ const { isStatic } = React.useContext(StickyContext);
46
+ return (!isStatic &&
47
+ label && (_jsx(BodyText, { variant: 'small', className: "hidden pl-4 lg:block shrink-0", children: label })));
48
+ };
49
+ const ContentSwitchDivider = () => {
50
+ return _jsx("div", { className: "hidden w-px lg:block h-14 bg-miscellaneous-divider" });
51
+ };
52
+ const ContentSwitch = ({ children, ...props }) => {
53
+ const [isSticky, setIsSticky] = React.useState(false);
54
+ const stickyAnchorRef = React.useRef(null);
55
+ const [staticSwitcherRef, { height: staticSwitcherHeight }] = useElementSize();
56
+ React.useEffect(() => {
57
+ if (!stickyAnchorRef.current)
58
+ return;
59
+ const observer = new IntersectionObserver(([e]) => {
60
+ if (!e)
61
+ return;
62
+ setIsSticky(e.intersectionRatio < 1);
63
+ }, {
64
+ threshold: [0],
65
+ rootMargin: `${staticSwitcherHeight}px 0px 0px 0px`,
66
+ });
67
+ observer.observe(stickyAnchorRef.current);
68
+ return () => observer.disconnect();
69
+ }, [staticSwitcherHeight]);
70
+ return (_jsxs(_Fragment, { children: [_jsx("div", { ref: stickyAnchorRef, className: "invisible" }), _jsx("div", { className: cn(contentSwitchClasses, 'lg:justify-self-start transition-all', isSticky ? 'invisible opacity-0' : 'visible opacity-100'), ref: staticSwitcherRef, ...props, children: _jsx(StickyContext.Provider, { value: { isSticky, isStatic: true }, children: children }) }), _jsx("div", { className: "flex justify-center", children: _jsx(Transition, { show: isSticky, children: _jsx("div", { className: cn(contentSwitchClasses, 'lg:shadow-draeger-elevation-2 lg:bg-surface-primary', 'fixed top-4 transition-all duration-300 data-[closed]:duration-0 data-[closed]:opacity-0 data-[open]:opacity-100 ease-out data-[closed]:invisible'), ...props, children: _jsx(StickyContext.Provider, { value: { isSticky, isStatic: false }, children: children }) }) }) })] }));
71
+ };
72
+ export { ContentSwitch, ContentSwitchTabs, ContentSwitchTab, ContentSwitchLinkButton, ContentSwitchCategoryLabel, ContentSwitchDivider, };
73
+ //# sourceMappingURL=ContentSwitch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentSwitch.js","sourceRoot":"","sources":["../../../../src/web/productFinder/contentSwitch/ContentSwitch.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './ContentSwitch';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/web/productFinder/contentSwitch/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './ContentSwitch';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/web/productFinder/contentSwitch/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { type HeadlineProps, type ImageProps } from '../../../components';
3
+ import { type LinkComponent, type LinkComponentProps } from '../../../utils';
4
+ export interface StageCategoryProps extends LinkComponentProps, LinkComponent {
5
+ image?: Omit<ImageProps, 'ratio'>;
6
+ label?: string;
7
+ }
8
+ declare const ProductFinderStageSectionTile: React.FC<StageCategoryProps>;
9
+ export interface ProductFinderStageTileWrapperRootProps extends React.HTMLAttributes<HTMLDivElement> {
10
+ }
11
+ declare const ProductFinderStageTileWrapperRoot: React.FC<ProductFinderStageTileWrapperRootProps>;
12
+ export interface ProductFinderStageTileWrapperProps {
13
+ children?: React.ReactNode;
14
+ }
15
+ declare const ProductFinderStageTileWrapper: React.FC<ProductFinderStageTileWrapperProps>;
16
+ export interface ProductFinderStageContainerProps {
17
+ children?: React.ReactNode;
18
+ }
19
+ declare const ProductFinderStageContainer: React.FC<ProductFinderStageContainerProps>;
20
+ export interface ProductFinderStageContainerProps {
21
+ headline?: string;
22
+ headlineActAs?: HeadlineProps['actAs'];
23
+ children?: React.ReactNode;
24
+ }
25
+ declare const ProductFinderStageContainerHeader: React.FC<ProductFinderStageContainerProps>;
26
+ export { ProductFinderStageTileWrapperRoot, ProductFinderStageTileWrapper, ProductFinderStageSectionTile, ProductFinderStageContainer, ProductFinderStageContainerHeader, };
27
+ //# sourceMappingURL=ProductFinderStageSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductFinderStageSection.d.ts","sourceRoot":"","sources":["../../../../src/web/productFinder/stageSection/ProductFinderStageSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAQL,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAK,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAI/E,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB,EAAE,aAAa;IAC3E,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAoB/D,CAAC;AAEF,MAAM,WAAW,sCACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjD,QAAA,MAAM,iCAAiC,EAAE,KAAK,CAAC,EAAE,CAC/C,sCAAsC,CAYvC,CAAC;AAUF,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,QAAA,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAC3C,kCAAkC,CAkEnC,CAAC;AAEF,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,QAAA,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CACzC,gCAAgC,CAYjC,CAAC;AAEF,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,QAAA,MAAM,iCAAiC,EAAE,KAAK,CAAC,EAAE,CAC/C,gCAAgC,CAYjC,CAAC;AAEF,OAAO,EACL,iCAAiC,EACjC,6BAA6B,EAC7B,6BAA6B,EAC7B,2BAA2B,EAC3B,iCAAiC,GAClC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import useEmblaCarousel from 'embla-carousel-react';
4
+ import { Image, Headline, Button, Icon, Container, BlockGrid, BlockChildrenWidthContainer, } from '../../../components';
5
+ import { cn } from '../../../utils';
6
+ import { getThemeBreakpoints } from '../../../utils/breakpoints';
7
+ import { usePrevNextButtons } from '../../../hooks/emblaCarousel/usePrevNextButtons';
8
+ const ProductFinderStageSectionTile = ({ image, label, LinkComponent = 'a', ...props }) => {
9
+ return (_jsxs(LinkComponent, { className: "flex flex-col transition-[box-shadow] bg-surface-primary hover:shadow-draeger-elevation-2 focus:outline-1 focus:outline focus:outline-border-accent", tabIndex: 0, ...props, children: [_jsx(Image, { ...image, ratio: "4/3" }), _jsx("div", { className: "p-3", children: _jsx(Headline, { headingLevel: "h6", spacingBottom: false, children: label }) })] }));
10
+ };
11
+ const ProductFinderStageTileWrapperRoot = ({ children, ...props }) => {
12
+ return (_jsx(BlockChildrenWidthContainer, { paddingBottom: "none", children: _jsx("div", { className: "grid grid-cols-2 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 gap-x-3 gap-y-10", ...props, children: children }) }));
13
+ };
14
+ const breakpoints = getThemeBreakpoints();
15
+ const scrollabelContainerClasses = `
16
+ flex -ml-3 lg:-ml-0
17
+ touch-pan-y touch-pinch-zoom
18
+ lg:grid lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 lg:gap-x-3 gap-y-10
19
+ `;
20
+ const ProductFinderStageTileWrapper = ({ children }) => {
21
+ const [carouselRef, emblaApi] = useEmblaCarousel({
22
+ align: 'start',
23
+ slidesToScroll: 2,
24
+ containScroll: 'keepSnaps',
25
+ watchDrag: true,
26
+ breakpoints: {
27
+ [`(min-width: ${breakpoints.lg.min})`]: {
28
+ dragFree: false,
29
+ watchDrag: false,
30
+ },
31
+ },
32
+ });
33
+ const { canScrollNext, canScrollPrev, scrollPrev, scrollNext } = usePrevNextButtons(emblaApi);
34
+ const childNodesArray = React.Children.toArray(children);
35
+ if (!childNodesArray.length)
36
+ return;
37
+ return (_jsx(BlockChildrenWidthContainer, { paddingBottom: "none", role: "region", "aria-roledescription": "slider",
38
+ // overflow-x-hidden is used as fallback for browsers that do not support overflow-clip
39
+ className: "font-text max-w-[100vw] w-full overflow-x-hidden overflow-x-clip lg:overflow-x-visible", children: _jsxs("div", { className: "relative", children: [_jsx("div", { ref: carouselRef, children: _jsx("div", { className: cn(scrollabelContainerClasses), children: childNodesArray.map((child, index) => (_jsx("div", { className: "flex-[0_0] basis-[222px] min-w-0 first:pl-0 pl-3 lg:pl-0", children: child }, index))) }) }), canScrollPrev && (_jsx(Button, { size: 'md', iconLeft: _jsx(Icon, { name: "core::chevron-left", size: 'md' }), variant: 'secondary', onClick: scrollPrev, "aria-label": "previousProductCategory", className: "absolute left-0 -translate-y-1/2 top-1/2 bg-surface-primary h-element-height-sm p-1.5" })), canScrollNext && (_jsx(Button, { size: 'md', iconLeft: _jsx(Icon, { name: "core::chevron-right", size: 'md' }), variant: 'secondary', onClick: scrollNext, "aria-label": "nextProductCategory", className: "absolute right-0 -translate-y-1/2 top-1/2 bg-surface-primary h-element-height-sm p-1.5" }))] }) }));
40
+ };
41
+ const ProductFinderStageContainer = ({ children }) => {
42
+ return (_jsx(Container, { background: "secondary", paddingBottom: "none", paddingTop: "none", className: "py-12 lg:pt-20 ", children: _jsx(BlockGrid, { paddingBottom: "none", children: children }) }));
43
+ };
44
+ const ProductFinderStageContainerHeader = ({ children, headline, headlineActAs }) => {
45
+ return (_jsx(BlockChildrenWidthContainer, { elementWidth: 'narrow', paddingBottom: "none", children: _jsxs("div", { className: "pb-16", children: [_jsx(Headline, { headingLevel: "h2", actAs: headlineActAs, className: "mb-6", children: headline }), children] }) }));
46
+ };
47
+ export { ProductFinderStageTileWrapperRoot, ProductFinderStageTileWrapper, ProductFinderStageSectionTile, ProductFinderStageContainer, ProductFinderStageContainerHeader, };
48
+ //# sourceMappingURL=ProductFinderStageSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductFinderStageSection.js","sourceRoot":"","sources":["../../../../src/web/productFinder/stageSection/ProductFinderStageSection.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './ProductFinderStageSection';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/web/productFinder/stageSection/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './ProductFinderStageSection';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/web/productFinder/stageSection/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}