@festo-ui/react 9.0.0-dev.718 → 9.0.0-dev.720

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 (235) hide show
  1. package/dist/components/accordion/Accordion.css +4 -0
  2. package/dist/components/accordion/Accordion.d.ts +10 -0
  3. package/dist/components/accordion/Accordion.js +41 -0
  4. package/dist/components/accordion/AccordionContext.d.ts +11 -0
  5. package/dist/components/accordion/AccordionContext.js +3 -0
  6. package/dist/components/accordion/accordion-header/AccordionHeader.css +11 -0
  7. package/dist/components/accordion/accordion-header/AccordionHeader.d.ts +2 -0
  8. package/dist/components/accordion/accordion-header/AccordionHeader.js +11 -0
  9. package/dist/components/accordion/accordion-item/AccordionItem.css +64 -0
  10. package/dist/components/accordion/accordion-item/AccordionItem.d.ts +8 -0
  11. package/dist/components/accordion/accordion-item/AccordionItem.js +60 -0
  12. package/dist/components/accordion/accordion-item/AccordionItemContext.d.ts +7 -0
  13. package/dist/components/accordion/accordion-item/AccordionItemContext.js +3 -0
  14. package/dist/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.css +76 -0
  15. package/dist/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.d.ts +2 -0
  16. package/dist/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.js +61 -0
  17. package/dist/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.css +11 -0
  18. package/dist/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.d.ts +2 -0
  19. package/dist/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.js +20 -0
  20. package/dist/components/bottom-sheet/BottomSheet.css +18 -0
  21. package/dist/components/bottom-sheet/BottomSheet.d.ts +12 -0
  22. package/dist/components/bottom-sheet/BottomSheet.js +101 -0
  23. package/dist/components/breadcrumb/Breadcrumb.d.ts +13 -0
  24. package/dist/components/breadcrumb/Breadcrumb.js +32 -0
  25. package/dist/components/button/Button.d.ts +11 -0
  26. package/dist/components/button/Button.js +36 -0
  27. package/dist/components/card/Card.d.ts +4 -0
  28. package/dist/components/card/Card.js +9 -0
  29. package/dist/components/card/CardBody.d.ts +5 -0
  30. package/dist/components/card/CardBody.js +15 -0
  31. package/dist/components/card/CardHeader.d.ts +8 -0
  32. package/dist/components/card/CardHeader.js +31 -0
  33. package/dist/components/card/CardHeader.stories.helper.js +7 -0
  34. package/dist/components/card/CardNotification.d.ts +6 -0
  35. package/dist/components/card/CardNotification.js +26 -0
  36. package/dist/components/chips/chip/Chip.d.ts +17 -0
  37. package/dist/components/chips/chip/Chip.js +38 -0
  38. package/dist/components/chips/chip-container/ChipContainer.d.ts +5 -0
  39. package/dist/components/chips/chip-container/ChipContainer.js +12 -0
  40. package/dist/components/icon-wrapper/IconWrapper.d.ts +3 -0
  41. package/dist/components/icon-wrapper/IconWrapper.js +13 -0
  42. package/dist/components/link-button/LinkButton.d.ts +8 -0
  43. package/dist/components/link-button/LinkButton.js +26 -0
  44. package/dist/components/loading-indicator/LoadingIndicator.d.ts +5 -0
  45. package/dist/components/loading-indicator/LoadingIndicator.js +41 -0
  46. package/dist/components/mobile-flyout/MobileFlyout.d.ts +11 -0
  47. package/dist/components/mobile-flyout/MobileFlyout.js +88 -0
  48. package/dist/components/mobile-flyout/MobileFlyoutContext.d.ts +8 -0
  49. package/dist/components/mobile-flyout/MobileFlyoutContext.js +3 -0
  50. package/dist/components/mobile-flyout/mobile-flyout-item/MobileFlyoutItem.d.ts +17 -0
  51. package/dist/components/mobile-flyout/mobile-flyout-item/MobileFlyoutItem.js +36 -0
  52. package/dist/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.css +5 -0
  53. package/dist/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.d.ts +8 -0
  54. package/dist/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.js +35 -0
  55. package/dist/components/modals/AlertModal.d.ts +12 -0
  56. package/dist/components/modals/AlertModal.js +53 -0
  57. package/dist/components/modals/ConfirmModal.d.ts +11 -0
  58. package/dist/components/modals/ConfirmModal.js +46 -0
  59. package/dist/components/modals/CustomModal.d.ts +8 -0
  60. package/dist/components/modals/CustomModal.js +38 -0
  61. package/dist/components/modals/Modal.css +39 -0
  62. package/dist/components/modals/Modal.d.ts +8 -0
  63. package/dist/components/modals/Modal.js +31 -0
  64. package/dist/components/modals/ModalBase.d.ts +9 -0
  65. package/dist/components/modals/ModalBase.js +124 -0
  66. package/dist/components/modals/ModalFooter.d.ts +2 -0
  67. package/dist/components/modals/ModalFooter.js +12 -0
  68. package/dist/components/modals/Prompt.d.ts +15 -0
  69. package/dist/components/modals/Prompt.js +58 -0
  70. package/dist/components/modals/image-gallery/ImageGallery.css +790 -0
  71. package/dist/components/modals/image-gallery/ImageGallery.d.ts +18 -0
  72. package/dist/components/modals/image-gallery/ImageGallery.helper.d.ts +2 -0
  73. package/dist/components/modals/image-gallery/ImageGallery.helper.js +13 -0
  74. package/dist/components/modals/image-gallery/ImageGallery.js +75 -0
  75. package/dist/components/modals/image-gallery/ImageGallery.stories.helper.js +112 -0
  76. package/dist/components/modals/image-gallery/ImageGalleryContent.d.ts +9 -0
  77. package/dist/components/modals/image-gallery/ImageGalleryContent.js +15 -0
  78. package/dist/components/modals/image-gallery/ImageGalleryContext.d.ts +10 -0
  79. package/dist/components/modals/image-gallery/ImageGalleryContext.js +4 -0
  80. package/dist/components/modals/image-gallery/ImageGallerySwiper.d.ts +8 -0
  81. package/dist/components/modals/image-gallery/ImageGallerySwiper.js +29 -0
  82. package/dist/components/modals/image-gallery/ImageGalleryThumbsSwiper.d.ts +5 -0
  83. package/dist/components/modals/image-gallery/ImageGalleryThumbsSwiper.js +23 -0
  84. package/dist/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.css +10 -0
  85. package/dist/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.d.ts +11 -0
  86. package/dist/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.js +24 -0
  87. package/dist/components/modals/image-gallery/internal/BaseGallery.d.ts +17 -0
  88. package/dist/components/modals/image-gallery/internal/BaseGallery.js +50 -0
  89. package/dist/components/modals/image-gallery/internal/CloseButton.d.ts +6 -0
  90. package/dist/components/modals/image-gallery/internal/CloseButton.js +14 -0
  91. package/dist/components/modals/image-gallery/internal/ImageGalleryContainer.d.ts +5 -0
  92. package/dist/components/modals/image-gallery/internal/ImageGalleryContainer.js +8 -0
  93. package/dist/components/modals/image-gallery/internal/ImageGalleryPagination.d.ts +5 -0
  94. package/dist/components/modals/image-gallery/internal/ImageGalleryPagination.js +29 -0
  95. package/dist/components/modals/image-gallery/internal/ScaleButton.d.ts +4 -0
  96. package/dist/components/modals/image-gallery/internal/ScaleButton.js +17 -0
  97. package/dist/components/pagination/Pagination.css +10 -0
  98. package/dist/components/pagination/Pagination.d.ts +15 -0
  99. package/dist/components/pagination/Pagination.js +100 -0
  100. package/dist/components/popovers/legend/Legend.css +21 -0
  101. package/dist/components/popovers/legend/Legend.d.ts +11 -0
  102. package/dist/components/popovers/legend/Legend.js +24 -0
  103. package/dist/components/popovers/popover/Popover.css +56 -0
  104. package/dist/components/popovers/popover/Popover.d.ts +20 -0
  105. package/dist/components/popovers/popover/Popover.js +106 -0
  106. package/dist/components/popovers/popover-menu/PopoverMenu.css +20 -0
  107. package/dist/components/popovers/popover-menu/PopoverMenu.d.ts +8 -0
  108. package/dist/components/popovers/popover-menu/PopoverMenu.js +37 -0
  109. package/dist/components/popovers/popover-menu/PopoverMenuContext.d.ts +3 -0
  110. package/dist/components/popovers/popover-menu/PopoverMenuContext.js +5 -0
  111. package/dist/components/popovers/popover-menu-item/PopoverMenuItem.css +35 -0
  112. package/dist/components/popovers/popover-menu-item/PopoverMenuItem.d.ts +10 -0
  113. package/dist/components/popovers/popover-menu-item/PopoverMenuItem.js +30 -0
  114. package/dist/components/popovers/tooltip/Tooltip.d.ts +5 -0
  115. package/dist/components/popovers/tooltip/Tooltip.js +12 -0
  116. package/dist/components/progress/Progress.d.ts +7 -0
  117. package/dist/components/progress/Progress.js +26 -0
  118. package/dist/components/search-input/ClearButton.d.ts +2 -0
  119. package/dist/components/search-input/ClearButton.js +10 -0
  120. package/dist/components/search-input/SearchInput.css +13 -0
  121. package/dist/components/search-input/SearchInput.d.ts +14 -0
  122. package/dist/components/search-input/SearchInput.js +61 -0
  123. package/dist/components/search-input/SearchSuggestion.d.ts +17 -0
  124. package/dist/components/search-input/SearchSuggestion.js +21 -0
  125. package/dist/components/search-input/useSearchInput.d.ts +13 -0
  126. package/dist/components/search-input/useSearchInput.js +85 -0
  127. package/dist/components/snackbar/Snackbar.css +55 -0
  128. package/dist/components/snackbar/Snackbar.d.ts +21 -0
  129. package/dist/components/snackbar/Snackbar.js +78 -0
  130. package/dist/components/snackbar/SnackbarContext.d.ts +7 -0
  131. package/dist/components/snackbar/SnackbarContext.js +3 -0
  132. package/dist/components/snackbar/SnackbarProvider.d.ts +8 -0
  133. package/dist/components/snackbar/SnackbarProvider.js +66 -0
  134. package/dist/components/snackbar/useSnackbar.d.ts +2 -0
  135. package/dist/components/snackbar/useSnackbar.js +4 -0
  136. package/dist/components/stepper-horizontal/StepperHorizontal.css +6 -0
  137. package/dist/components/stepper-horizontal/StepperHorizontal.d.ts +7 -0
  138. package/dist/components/stepper-horizontal/StepperHorizontal.js +48 -0
  139. package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.css +24 -0
  140. package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.d.ts +6 -0
  141. package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.js +16 -0
  142. package/dist/components/stepper-vertical/StepperVertical.d.ts +6 -0
  143. package/dist/components/stepper-vertical/StepperVertical.js +26 -0
  144. package/dist/components/stepper-vertical/step-vertical/StepVertical.css +10 -0
  145. package/dist/components/stepper-vertical/step-vertical/StepVertical.d.ts +11 -0
  146. package/dist/components/stepper-vertical/step-vertical/StepVertical.js +58 -0
  147. package/dist/components/tab/Tabs.css +285 -0
  148. package/dist/components/tab/Tabs.d.ts +23 -0
  149. package/dist/components/tab/Tabs.js +194 -0
  150. package/dist/components/tab/interfaces.d.ts +5 -0
  151. package/dist/components/tab/interfaces.js +0 -0
  152. package/dist/components/tab/tab-pane/TabPane.css +8 -0
  153. package/dist/components/tab/tab-pane/TabPane.d.ts +9 -0
  154. package/dist/components/tab/tab-pane/TabPane.js +18 -0
  155. package/dist/components/tab/useTabScroll.d.ts +25 -0
  156. package/dist/components/tab/useTabScroll.js +151 -0
  157. package/dist/components/table-header-cell/TableHeaderCell.d.ts +5 -0
  158. package/dist/components/table-header-cell/TableHeaderCell.js +21 -0
  159. package/dist/forms/checkbox/Checkbox.css +134 -0
  160. package/dist/forms/checkbox/Checkbox.d.ts +15 -0
  161. package/dist/forms/checkbox/Checkbox.js +80 -0
  162. package/dist/forms/radio/RadioButton.d.ts +14 -0
  163. package/dist/forms/radio/RadioButton.js +61 -0
  164. package/dist/forms/radio/RadioGroup.d.ts +12 -0
  165. package/dist/forms/radio/RadioGroup.js +50 -0
  166. package/dist/forms/radio/RadioGroupContext.d.ts +12 -0
  167. package/dist/forms/radio/RadioGroupContext.js +3 -0
  168. package/dist/forms/segment/Segment.d.ts +13 -0
  169. package/dist/forms/segment/Segment.js +59 -0
  170. package/dist/forms/segment/segment-control/SegmentControl.d.ts +14 -0
  171. package/dist/forms/segment/segment-control/SegmentControl.js +57 -0
  172. package/dist/forms/select/Select.css +160 -0
  173. package/dist/forms/select/Select.d.ts +26 -0
  174. package/dist/forms/select/Select.js +95 -0
  175. package/dist/forms/select/internal/HiddenInput.d.ts +8 -0
  176. package/dist/forms/select/internal/HiddenInput.js +15 -0
  177. package/dist/forms/select/internal/ListItem.d.ts +18 -0
  178. package/dist/forms/select/internal/ListItem.js +69 -0
  179. package/dist/forms/select/internal/SelectButton.d.ts +12 -0
  180. package/dist/forms/select/internal/SelectButton.js +49 -0
  181. package/dist/forms/select/internal/SelectButtonContent.d.ts +7 -0
  182. package/dist/forms/select/internal/SelectButtonContent.js +31 -0
  183. package/dist/forms/select/internal/SelectCheckbox.d.ts +4 -0
  184. package/dist/forms/select/internal/SelectCheckbox.js +13 -0
  185. package/dist/forms/select/internal/SelectLabel.d.ts +7 -0
  186. package/dist/forms/select/internal/SelectLabel.js +12 -0
  187. package/dist/forms/select/internal/SelectOptionsContainer.d.ts +17 -0
  188. package/dist/forms/select/internal/SelectOptionsContainer.js +103 -0
  189. package/dist/forms/select/internal/SelectScrollContainer.d.ts +8 -0
  190. package/dist/forms/select/internal/SelectScrollContainer.js +15 -0
  191. package/dist/forms/select/internal/SelectWrapper.d.ts +6 -0
  192. package/dist/forms/select/internal/SelectWrapper.js +12 -0
  193. package/dist/forms/select/internal/index.d.ts +6 -0
  194. package/dist/forms/select/internal/index.js +7 -0
  195. package/dist/forms/select/internal/utils.d.ts +7 -0
  196. package/dist/forms/select/internal/utils.js +30 -0
  197. package/dist/forms/select/select-option/SelectOption.d.ts +14 -0
  198. package/dist/forms/select/select-option/SelectOption.js +12 -0
  199. package/dist/forms/select/utils.d.ts +2 -0
  200. package/dist/forms/select/utils.js +12 -0
  201. package/dist/forms/slider/Slider.css +50 -0
  202. package/dist/forms/slider/Slider.d.ts +17 -0
  203. package/dist/forms/slider/Slider.js +93 -0
  204. package/dist/forms/switch/Switch.d.ts +12 -0
  205. package/dist/forms/switch/Switch.js +42 -0
  206. package/dist/forms/text-area/TextArea.css +14 -0
  207. package/dist/forms/text-area/TextArea.d.ts +22 -0
  208. package/dist/forms/text-area/TextArea.js +99 -0
  209. package/dist/forms/text-input/TextInput.d.ts +24 -0
  210. package/dist/forms/text-input/TextInput.js +74 -0
  211. package/dist/forms/time-picker/TimePicker.css +10 -0
  212. package/dist/forms/time-picker/TimePicker.d.ts +24 -0
  213. package/dist/forms/time-picker/TimePicker.js +140 -0
  214. package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.css +4 -0
  215. package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.d.ts +19 -0
  216. package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.js +202 -0
  217. package/dist/forms/time-picker/time-picker-dropdown/TimePickerInput.d.ts +9 -0
  218. package/dist/forms/time-picker/time-picker-dropdown/TimePickerInput.js +14 -0
  219. package/dist/index.d.ts +63 -0
  220. package/dist/index.js +60 -0
  221. package/dist/utils/index.d.ts +1 -0
  222. package/dist/utils/index.js +7 -0
  223. package/dist/utils/setRef.d.ts +1 -0
  224. package/dist/utils/setRef.js +5 -0
  225. package/dist/utils/types.d.ts +29 -0
  226. package/dist/utils/types.js +0 -0
  227. package/dist/utils/useControlled.d.ts +7 -0
  228. package/dist/utils/useControlled.js +20 -0
  229. package/dist/utils/useForkRef.d.ts +2 -0
  230. package/dist/utils/useForkRef.js +15 -0
  231. package/dist/utils/useId.d.ts +1 -0
  232. package/dist/utils/useId.js +20 -0
  233. package/dist/utils/useOnClickOutside.d.ts +2 -0
  234. package/dist/utils/useOnClickOutside.js +20 -0
  235. package/package.json +1 -2
@@ -0,0 +1,18 @@
1
+ import './ImageGallery.scss';
2
+ import { type ComponentPropsWithoutRef } from 'react';
3
+ import { type ModalBaseProps } from '../ModalBase';
4
+ import { type ImageGalleryItemData, type ImageGalleryItemDataBase } from './internal/BaseGallery';
5
+ export interface ImageGalleryProps extends ComponentPropsWithoutRef<'div'>, ModalBaseProps {
6
+ /** Index number of initial slide. */
7
+ startIndex: number;
8
+ images?: ImageGalleryItemData[];
9
+ thumbnailImages?: ImageGalleryItemDataBase[];
10
+ /** Whether to show pagination controls. Can also accept a number in case images are passed as children */
11
+ pagination?: boolean | number;
12
+ showScaleButton?: boolean;
13
+ /** Whether to show descriptive content). Can also be used as a render prop called with the index of the current image */
14
+ descriptiveContent?: boolean | ((index: number) => React.ReactNode);
15
+ onSlideChanged?: (index: number) => void;
16
+ onScaleChange?: (value: boolean) => void;
17
+ }
18
+ export declare const ImageGallery: (props: ImageGalleryProps & import("react").RefAttributes<HTMLImageElement>) => React.ReactElement | null;
@@ -0,0 +1,2 @@
1
+ import { type Argument } from 'classnames';
2
+ export declare const getClasses: (thumbnailImages: Argument, descriptiveContent: Argument, className: Argument) => string;
@@ -0,0 +1,13 @@
1
+ import classnames from "classnames";
2
+ const getClasses = (thumbnailImages, descriptiveContent, className)=>{
3
+ const base = 'fwe-modal-image-gallery';
4
+ const thumbnail = `${base}--with-thumbnails`;
5
+ const container = `${base}--with-container`;
6
+ return classnames(base, {
7
+ [thumbnail]: [
8
+ thumbnailImages
9
+ ],
10
+ [container]: descriptiveContent
11
+ }, className);
12
+ };
13
+ export { getClasses };
@@ -0,0 +1,75 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import "./ImageGallery.css";
3
+ import { forwardRef, useState } from "react";
4
+ import { ModalBase } from "../ModalBase.js";
5
+ import { getClasses } from "./ImageGallery.helper.js";
6
+ import { ImageGalleryContent } from "./ImageGalleryContent.js";
7
+ import { BaseGallery } from "./internal/BaseGallery.js";
8
+ import { CloseButton } from "./internal/CloseButton.js";
9
+ import { ImageGalleryContainer } from "./internal/ImageGalleryContainer.js";
10
+ import { ImageGalleryPagination } from "./internal/ImageGalleryPagination.js";
11
+ import { ScaleButton } from "./internal/ScaleButton.js";
12
+ function getLength(pagination, images) {
13
+ let length = 0;
14
+ if ('number' == typeof pagination) length = pagination;
15
+ else if (true === pagination && images?.length) length = images.length;
16
+ return length;
17
+ }
18
+ const ImageGallery = /*#__PURE__*/ forwardRef(({ isOpen, startIndex, images, thumbnailImages, descriptiveContent, children, className, pagination, showScaleButton, onClose, onSlideChanged, onScaleChange, ...props }, ref)=>{
19
+ const [currentIndex, setCurrentIndex] = useState(startIndex + 1);
20
+ function handleChange(index) {
21
+ setCurrentIndex(index + 1);
22
+ onSlideChanged?.(index);
23
+ }
24
+ function handleClose() {
25
+ setCurrentIndex(startIndex + 1);
26
+ onClose?.();
27
+ }
28
+ const hasDescriptiveContent = Boolean(descriptiveContent);
29
+ const classes = getClasses(thumbnailImages, hasDescriptiveContent, className);
30
+ const length = getLength(pagination, images);
31
+ return /*#__PURE__*/ jsx(ModalBase, {
32
+ onClose: handleClose,
33
+ className: classes,
34
+ ...props,
35
+ isOpen: isOpen,
36
+ ref: ref,
37
+ children: isOpen && /*#__PURE__*/ jsxs(Fragment, {
38
+ children: [
39
+ /*#__PURE__*/ jsxs("div", {
40
+ className: "fwe-image-gallery-header",
41
+ children: [
42
+ /*#__PURE__*/ jsx(ImageGalleryPagination, {
43
+ currentIndex: currentIndex,
44
+ length: length
45
+ }),
46
+ showScaleButton ? /*#__PURE__*/ jsx(ScaleButton, {
47
+ onScaleChange: onScaleChange
48
+ }) : null,
49
+ /*#__PURE__*/ jsx(CloseButton, {
50
+ showScaleButton: showScaleButton,
51
+ onClose: onClose
52
+ })
53
+ ]
54
+ }),
55
+ /*#__PURE__*/ jsxs(ImageGalleryContainer, {
56
+ descriptiveContent: hasDescriptiveContent,
57
+ children: [
58
+ /*#__PURE__*/ jsx(BaseGallery, {
59
+ startIndex: startIndex,
60
+ images: images,
61
+ thumbnailImages: thumbnailImages,
62
+ onSlideChanged: handleChange,
63
+ children: children
64
+ }),
65
+ images && true === descriptiveContent ? /*#__PURE__*/ jsx(ImageGalleryContent, {
66
+ imageContent: images?.[currentIndex - 1]?.content
67
+ }) : null,
68
+ 'function' == typeof descriptiveContent ? descriptiveContent?.(currentIndex - 1) : null
69
+ ]
70
+ })
71
+ ]
72
+ })
73
+ });
74
+ });
75
+ export { ImageGallery };
@@ -0,0 +1,112 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import gallery_01 from "../../../../../web-essentials/stories/assets/gallery-01.webp";
3
+ import gallery_02 from "../../../../../web-essentials/stories/assets/gallery-02.webp";
4
+ import gallery_03 from "../../../../../web-essentials/stories/assets/gallery-03.webp";
5
+ import gallery_04 from "../../../../../web-essentials/stories/assets/gallery-04.webp";
6
+ import gallery_05 from "../../../../../web-essentials/stories/assets/gallery-05.webp";
7
+ import gallery_06 from "../../../../../web-essentials/stories/assets/gallery-06.webp";
8
+ import gallery_07 from "../../../../../web-essentials/stories/assets/gallery-07.webp";
9
+ import gallery_08 from "../../../../../web-essentials/stories/assets/gallery-08.webp";
10
+ import gallery_09 from "../../../../../web-essentials/stories/assets/gallery-09.webp";
11
+ import gallery_10 from "../../../../../web-essentials/stories/assets/gallery-10.webp";
12
+ const ImageGallery_stories_helper_images = [
13
+ {
14
+ src: gallery_01,
15
+ alt: 'Asset1',
16
+ imageContent: {
17
+ title: 'Asset 1',
18
+ body: "Asset 1 description"
19
+ }
20
+ },
21
+ {
22
+ src: gallery_02,
23
+ alt: 'Asset2',
24
+ containMode: true,
25
+ imageContent: {
26
+ title: 'Asset 2',
27
+ body: /*#__PURE__*/ jsxs(Fragment, {
28
+ children: [
29
+ /*#__PURE__*/ jsx("p", {
30
+ children: "Asset 2 description with some html inside."
31
+ }),
32
+ /*#__PURE__*/ jsxs("ul", {
33
+ children: [
34
+ /*#__PURE__*/ jsx("li", {
35
+ children: "bullet point 1"
36
+ }),
37
+ /*#__PURE__*/ jsx("li", {
38
+ children: "bullet point 2"
39
+ })
40
+ ]
41
+ })
42
+ ]
43
+ })
44
+ }
45
+ },
46
+ {
47
+ src: gallery_03,
48
+ alt: 'Asset3',
49
+ containMode: true,
50
+ imageContent: {
51
+ title: 'Asset 3',
52
+ body: "Asset 3 description"
53
+ }
54
+ },
55
+ {
56
+ src: gallery_04,
57
+ alt: 'Asset4',
58
+ imageContent: {
59
+ title: 'Asset 4',
60
+ body: "Asset 4 description"
61
+ }
62
+ },
63
+ {
64
+ src: gallery_05,
65
+ alt: 'Asset5',
66
+ imageContent: {
67
+ title: 'Asset 5',
68
+ body: "Asset 5 description"
69
+ }
70
+ },
71
+ {
72
+ src: gallery_06,
73
+ alt: 'Asset6',
74
+ imageContent: {
75
+ title: 'Asset 6',
76
+ body: "Asset 6 description"
77
+ }
78
+ },
79
+ {
80
+ src: gallery_07,
81
+ alt: 'Asset7',
82
+ imageContent: {
83
+ title: 'Asset 7',
84
+ body: "Asset 7 description"
85
+ }
86
+ },
87
+ {
88
+ src: gallery_08,
89
+ alt: 'Asset8',
90
+ imageContent: {
91
+ title: 'Asset 8',
92
+ body: "Asset 8 description"
93
+ }
94
+ },
95
+ {
96
+ src: gallery_09,
97
+ alt: 'Asset9',
98
+ imageContent: {
99
+ title: 'Asset 9',
100
+ body: "Asset 9 description"
101
+ }
102
+ },
103
+ {
104
+ src: gallery_10,
105
+ alt: 'Asset10',
106
+ imageContent: {
107
+ title: 'Asset 10',
108
+ body: "Asset 1\xdf description"
109
+ }
110
+ }
111
+ ];
112
+ export { ImageGallery_stories_helper_images as images };
@@ -0,0 +1,9 @@
1
+ export interface ImageDescriptiveContent {
2
+ title: string;
3
+ body: React.ReactNode;
4
+ }
5
+ interface ImageGalleryContentProps {
6
+ imageContent?: ImageDescriptiveContent;
7
+ }
8
+ export declare function ImageGalleryContent({ imageContent, }: ImageGalleryContentProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,15 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ function ImageGalleryContent({ imageContent }) {
3
+ return /*#__PURE__*/ jsx(Fragment, {
4
+ children: imageContent && /*#__PURE__*/ jsxs("div", {
5
+ className: "fwe-image-gallery-content",
6
+ children: [
7
+ /*#__PURE__*/ jsx("h3", {
8
+ children: imageContent.title
9
+ }),
10
+ imageContent.body
11
+ ]
12
+ })
13
+ });
14
+ }
15
+ export { ImageGalleryContent };
@@ -0,0 +1,10 @@
1
+ import type { Swiper as SwiperClass } from 'swiper';
2
+ interface ContextProps {
3
+ thumbsSwiper: SwiperClass | null;
4
+ setThumbsSwiper: React.Dispatch<React.SetStateAction<SwiperClass | null>>;
5
+ onSlideChanged?: (value: number) => void;
6
+ startIndex?: number;
7
+ }
8
+ export declare const ImageGalleryContext: import("react").Context<Partial<ContextProps>>;
9
+ export declare const SwiperContext: import("react").Context<"gallery" | "thumbs">;
10
+ export {};
@@ -0,0 +1,4 @@
1
+ import { createContext } from "react";
2
+ const ImageGalleryContext = createContext({});
3
+ const SwiperContext = createContext('gallery');
4
+ export { ImageGalleryContext, SwiperContext };
@@ -0,0 +1,8 @@
1
+ interface ImageGallerySwiperProps {
2
+ children: React.ReactNode;
3
+ }
4
+ export declare function ImageGallerySwiper({ children }: ImageGallerySwiperProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare namespace ImageGallerySwiper {
6
+ var displayName: string;
7
+ }
8
+ export {};
@@ -0,0 +1,29 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useContext } from "react";
3
+ import { Navigation, Thumbs } from "swiper/modules";
4
+ import { Swiper } from "swiper/react";
5
+ import { ImageGalleryContext } from "./ImageGalleryContext.js";
6
+ function ImageGallerySwiper({ children }) {
7
+ const { thumbsSwiper, startIndex, onSlideChanged } = useContext(ImageGalleryContext);
8
+ return /*#__PURE__*/ jsx(Swiper, {
9
+ initialSlide: startIndex,
10
+ thumbs: {
11
+ swiper: thumbsSwiper
12
+ },
13
+ modules: [
14
+ Thumbs,
15
+ Navigation
16
+ ],
17
+ navigation: {
18
+ nextEl: '.fwe-navigate-btn-up',
19
+ prevEl: '.fwe-navigate-btn-down'
20
+ },
21
+ zoom: true,
22
+ className: "gallery-swiper fwe-image-gallery",
23
+ spaceBetween: 0,
24
+ onSlideChange: (slider)=>onSlideChanged?.(slider.activeIndex),
25
+ children: children
26
+ });
27
+ }
28
+ ImageGallerySwiper.displayName = 'Swiper';
29
+ export { ImageGallerySwiper };
@@ -0,0 +1,5 @@
1
+ interface ImageGalleryThumbsSwiperProps {
2
+ children: React.ReactNode;
3
+ }
4
+ export declare function ImageGalleryThumbsSwiper({ children, }: ImageGalleryThumbsSwiperProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,23 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useContext } from "react";
3
+ import { Thumbs } from "swiper/modules";
4
+ import { Swiper } from "swiper/react";
5
+ import { ImageGalleryContext, SwiperContext } from "./ImageGalleryContext.js";
6
+ function ImageGalleryThumbsSwiper({ children }) {
7
+ const { setThumbsSwiper } = useContext(ImageGalleryContext);
8
+ return /*#__PURE__*/ jsx(SwiperContext.Provider, {
9
+ value: "thumbs",
10
+ children: /*#__PURE__*/ jsx(Swiper, {
11
+ freeMode: true,
12
+ slidesPerView: "auto",
13
+ className: "thumbs-swiper fwe-image-gallery-thumbs",
14
+ modules: [
15
+ Thumbs
16
+ ],
17
+ watchSlidesProgress: true,
18
+ onSwiper: setThumbsSwiper,
19
+ children: children
20
+ })
21
+ });
22
+ }
23
+ export { ImageGalleryThumbsSwiper };
@@ -0,0 +1,10 @@
1
+ .fwe-image-gallery .fr-image-gallery-item--contain img {
2
+ object-fit: contain;
3
+ padding: 24px;
4
+ }
5
+
6
+ .fwe-image-gallery-thumbs.swiper .fr-image-gallery-item--contain img {
7
+ object-fit: contain;
8
+ padding: 4px;
9
+ }
10
+
@@ -0,0 +1,11 @@
1
+ import { type SwiperSlideProps } from 'swiper/react';
2
+ import './ImageGalleryItem.scss';
3
+ interface ImageGalleryItemProps extends SwiperSlideProps {
4
+ children: React.ReactNode;
5
+ containMode?: boolean;
6
+ }
7
+ export declare function ImageGalleryItem({ children, containMode, className, ...props }: ImageGalleryItemProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare namespace ImageGalleryItem {
9
+ var displayName: string;
10
+ }
11
+ export {};
@@ -0,0 +1,24 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import classnames from "classnames";
3
+ import { SwiperSlide } from "swiper/react";
4
+ import "./ImageGalleryItem.css";
5
+ import { useContext } from "react";
6
+ import { SwiperContext } from "../ImageGalleryContext.js";
7
+ function ImageGalleryItem({ children, containMode, className, ...props }) {
8
+ const swiperType = useContext(SwiperContext);
9
+ const isThumbsSwiper = 'thumbs' === swiperType;
10
+ return /*#__PURE__*/ jsx(SwiperSlide, {
11
+ ...props,
12
+ className: classnames(className, {
13
+ 'fr-image-gallery-item--contain': containMode && isThumbsSwiper
14
+ }),
15
+ children: isThumbsSwiper ? children : /*#__PURE__*/ jsx("div", {
16
+ className: classnames('swiper-zoom-container', {
17
+ 'fr-image-gallery-item--contain': containMode
18
+ }),
19
+ children: children
20
+ })
21
+ });
22
+ }
23
+ ImageGalleryItem.displayName = 'SwiperSlide';
24
+ export { ImageGalleryItem };
@@ -0,0 +1,17 @@
1
+ import { type ComponentPropsWithoutRef } from 'react';
2
+ import type { ClassNamePropsWithChildren } from '../../../../utils/types';
3
+ import type { ImageDescriptiveContent } from '../ImageGalleryContent';
4
+ export interface ImageGalleryItemDataBase extends ComponentPropsWithoutRef<'img'>, Record<string, unknown> {
5
+ containMode?: boolean;
6
+ }
7
+ export type ImageGalleryItemData = {
8
+ content?: ImageDescriptiveContent;
9
+ } & ImageGalleryItemDataBase;
10
+ interface BaseGalleryProps extends ClassNamePropsWithChildren {
11
+ readonly images?: ImageGalleryItemData[];
12
+ readonly thumbnailImages?: ImageGalleryItemDataBase[];
13
+ readonly onSlideChanged?: (value: number) => void;
14
+ readonly startIndex?: number;
15
+ }
16
+ export declare function BaseGallery({ images, thumbnailImages, onSlideChanged, startIndex, children, }: BaseGalleryProps): import("react/jsx-runtime").JSX.Element;
17
+ export {};
@@ -0,0 +1,50 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState } from "react";
3
+ import { ImageGalleryContext } from "../ImageGalleryContext.js";
4
+ import { ImageGallerySwiper } from "../ImageGallerySwiper.js";
5
+ import { ImageGalleryThumbsSwiper } from "../ImageGalleryThumbsSwiper.js";
6
+ import { ImageGalleryItem } from "../image-gallery-item/ImageGalleryItem.js";
7
+ function BaseGallery({ images, thumbnailImages, onSlideChanged, startIndex, children }) {
8
+ const [thumbsSwiper, setThumbsSwiper] = useState(null);
9
+ const contextValue = useMemo(()=>({
10
+ thumbsSwiper,
11
+ setThumbsSwiper,
12
+ onSlideChanged,
13
+ startIndex
14
+ }), [
15
+ thumbsSwiper,
16
+ onSlideChanged,
17
+ startIndex
18
+ ]);
19
+ return /*#__PURE__*/ jsx(ImageGalleryContext.Provider, {
20
+ value: contextValue,
21
+ children: /*#__PURE__*/ jsx("div", {
22
+ className: "fwe-image-gallery-wrapper",
23
+ children: children || /*#__PURE__*/ jsxs(Fragment, {
24
+ children: [
25
+ /*#__PURE__*/ jsx(ImageGallerySwiper, {
26
+ children: images?.map(({ containMode, alt, content, ...image })=>/*#__PURE__*/ jsx(ImageGalleryItem, {
27
+ containMode: containMode,
28
+ children: /*#__PURE__*/ jsx("img", {
29
+ ...image,
30
+ className: image.className,
31
+ alt: alt
32
+ })
33
+ }, image.src))
34
+ }),
35
+ thumbnailImages && /*#__PURE__*/ jsx(ImageGalleryThumbsSwiper, {
36
+ children: thumbnailImages.map(({ containMode, alt, content, ...image })=>/*#__PURE__*/ jsx(ImageGalleryItem, {
37
+ containMode: containMode,
38
+ children: /*#__PURE__*/ jsx("img", {
39
+ ...image,
40
+ className: image.className,
41
+ alt: alt
42
+ })
43
+ }, image.src))
44
+ })
45
+ ]
46
+ })
47
+ })
48
+ });
49
+ }
50
+ export { BaseGallery };
@@ -0,0 +1,6 @@
1
+ interface CloseButtonProps {
2
+ onClose?: () => void;
3
+ showScaleButton?: boolean;
4
+ }
5
+ export declare function CloseButton({ onClose, showScaleButton }: CloseButtonProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,14 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import classnames from "classnames";
3
+ function CloseButton({ onClose, showScaleButton }) {
4
+ return /*#__PURE__*/ jsx("button", {
5
+ type: "button",
6
+ "aria-label": "close",
7
+ className: classnames('fwe-image-gallery-close-btn', {
8
+ 'fwe-ml-auto': !showScaleButton,
9
+ 'fwe-ml-3': showScaleButton
10
+ }),
11
+ onClick: onClose
12
+ });
13
+ }
14
+ export { CloseButton };
@@ -0,0 +1,5 @@
1
+ export interface ImageGalleryContainerProps {
2
+ children: React.ReactNode;
3
+ descriptiveContent?: boolean;
4
+ }
5
+ export declare function ImageGalleryContainer({ children, descriptiveContent, }: ImageGalleryContainerProps): string | number | boolean | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
@@ -0,0 +1,8 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ function ImageGalleryContainer({ children, descriptiveContent }) {
3
+ return descriptiveContent ? /*#__PURE__*/ jsx("div", {
4
+ className: "fwe-image-gallery-container",
5
+ children: children
6
+ }) : children;
7
+ }
8
+ export { ImageGalleryContainer };
@@ -0,0 +1,5 @@
1
+ export interface ImageGalleryPaginationProps {
2
+ currentIndex: number;
3
+ length?: number;
4
+ }
5
+ export declare function ImageGalleryPagination({ currentIndex, length, }: ImageGalleryPaginationProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ function ImageGalleryPagination({ currentIndex, length }) {
3
+ return /*#__PURE__*/ jsx(Fragment, {
4
+ children: length && /*#__PURE__*/ jsxs("div", {
5
+ className: "fwe-pagination fwe-pagination--on-dark-bg",
6
+ children: [
7
+ /*#__PURE__*/ jsx("button", {
8
+ "aria-label": "previous",
9
+ type: "button",
10
+ className: "fwe-navigate-btn-down"
11
+ }),
12
+ /*#__PURE__*/ jsx("span", {
13
+ className: "fwe-page-current",
14
+ children: currentIndex
15
+ }),
16
+ /*#__PURE__*/ jsx("span", {
17
+ className: "fwe-page-max",
18
+ children: length
19
+ }),
20
+ /*#__PURE__*/ jsx("button", {
21
+ "aria-label": "next",
22
+ type: "button",
23
+ className: "fwe-navigate-btn-up"
24
+ })
25
+ ]
26
+ })
27
+ });
28
+ }
29
+ export { ImageGalleryPagination };
@@ -0,0 +1,4 @@
1
+ export interface ScaleButtonProps {
2
+ onScaleChange?: (value: boolean) => void;
3
+ }
4
+ export declare function ScaleButton({ onScaleChange }: ScaleButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ function ScaleButton({ onScaleChange }) {
4
+ const [isScaled, setScaled] = useState(false);
5
+ function handleScale() {
6
+ const newScaled = !isScaled;
7
+ setScaled(newScaled);
8
+ onScaleChange?.(newScaled);
9
+ }
10
+ return /*#__PURE__*/ jsx("button", {
11
+ type: "button",
12
+ "aria-label": "scale up",
13
+ className: "fwe-image-gallery-scale-btn fwe-ml-auto",
14
+ onClick: handleScale
15
+ });
16
+ }
17
+ export { ScaleButton };
@@ -0,0 +1,10 @@
1
+ .fwe-page-dot {
2
+ border: none;
3
+ padding: 0;
4
+ }
5
+
6
+ .fwe-page-dot:focus {
7
+ background: var(--fwe-control-border-hover);
8
+ outline: 0;
9
+ }
10
+
@@ -0,0 +1,15 @@
1
+ import './Pagination.scss';
2
+ import type { ClassNameProps } from '../../utils/types';
3
+ export declare enum PaginationType {
4
+ Simple = "SIMPLE",
5
+ Numeric = "NUMERIC",
6
+ Dots = "DOTS"
7
+ }
8
+ export interface PaginationProps extends ClassNameProps {
9
+ readonly type?: PaginationType;
10
+ readonly onChange?: (page: number) => void;
11
+ readonly pageCurrent?: number;
12
+ readonly defaultPageCurrent?: number;
13
+ readonly pageMax: number;
14
+ }
15
+ export declare function Pagination(props: PaginationProps): import("react/jsx-runtime").JSX.Element;