@festo-ui/react 9.0.0-dev.725 → 9.0.0-dev.727

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 (228) 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 +815 -0
  71. package/dist/components/modals/image-gallery/ImageGallery.d.ts +21 -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 +103 -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/ImageGalleryScale.d.ts +6 -0
  79. package/dist/components/modals/image-gallery/ImageGalleryScale.js +15 -0
  80. package/dist/components/modals/image-gallery/ImageGallerySwiper.d.ts +13 -0
  81. package/dist/components/modals/image-gallery/ImageGallerySwiper.js +40 -0
  82. package/dist/components/modals/image-gallery/ImageGalleryThumbsSwiper.d.ts +8 -0
  83. package/dist/components/modals/image-gallery/ImageGalleryThumbsSwiper.js +27 -0
  84. package/dist/components/modals/image-gallery/internal/CloseButton.d.ts +6 -0
  85. package/dist/components/modals/image-gallery/internal/CloseButton.js +14 -0
  86. package/dist/components/modals/image-gallery/internal/ImageGalleryContainer.d.ts +5 -0
  87. package/dist/components/modals/image-gallery/internal/ImageGalleryContainer.js +8 -0
  88. package/dist/components/modals/image-gallery/internal/ImageGalleryPagination.d.ts +5 -0
  89. package/dist/components/modals/image-gallery/internal/ImageGalleryPagination.js +29 -0
  90. package/dist/components/pagination/Pagination.css +10 -0
  91. package/dist/components/pagination/Pagination.d.ts +15 -0
  92. package/dist/components/pagination/Pagination.js +100 -0
  93. package/dist/components/popovers/legend/Legend.css +21 -0
  94. package/dist/components/popovers/legend/Legend.d.ts +11 -0
  95. package/dist/components/popovers/legend/Legend.js +24 -0
  96. package/dist/components/popovers/popover/Popover.css +56 -0
  97. package/dist/components/popovers/popover/Popover.d.ts +20 -0
  98. package/dist/components/popovers/popover/Popover.js +106 -0
  99. package/dist/components/popovers/popover-menu/PopoverMenu.css +20 -0
  100. package/dist/components/popovers/popover-menu/PopoverMenu.d.ts +8 -0
  101. package/dist/components/popovers/popover-menu/PopoverMenu.js +37 -0
  102. package/dist/components/popovers/popover-menu/PopoverMenuContext.d.ts +3 -0
  103. package/dist/components/popovers/popover-menu/PopoverMenuContext.js +5 -0
  104. package/dist/components/popovers/popover-menu-item/PopoverMenuItem.css +35 -0
  105. package/dist/components/popovers/popover-menu-item/PopoverMenuItem.d.ts +10 -0
  106. package/dist/components/popovers/popover-menu-item/PopoverMenuItem.js +30 -0
  107. package/dist/components/popovers/tooltip/Tooltip.d.ts +5 -0
  108. package/dist/components/popovers/tooltip/Tooltip.js +12 -0
  109. package/dist/components/progress/Progress.d.ts +7 -0
  110. package/dist/components/progress/Progress.js +26 -0
  111. package/dist/components/search-input/ClearButton.d.ts +2 -0
  112. package/dist/components/search-input/ClearButton.js +10 -0
  113. package/dist/components/search-input/SearchInput.css +13 -0
  114. package/dist/components/search-input/SearchInput.d.ts +14 -0
  115. package/dist/components/search-input/SearchInput.js +61 -0
  116. package/dist/components/search-input/SearchSuggestion.d.ts +17 -0
  117. package/dist/components/search-input/SearchSuggestion.js +21 -0
  118. package/dist/components/search-input/useSearchInput.d.ts +13 -0
  119. package/dist/components/search-input/useSearchInput.js +85 -0
  120. package/dist/components/snackbar/Snackbar.css +55 -0
  121. package/dist/components/snackbar/Snackbar.d.ts +21 -0
  122. package/dist/components/snackbar/Snackbar.js +78 -0
  123. package/dist/components/snackbar/SnackbarContext.d.ts +7 -0
  124. package/dist/components/snackbar/SnackbarContext.js +3 -0
  125. package/dist/components/snackbar/SnackbarProvider.d.ts +8 -0
  126. package/dist/components/snackbar/SnackbarProvider.js +66 -0
  127. package/dist/components/snackbar/useSnackbar.d.ts +2 -0
  128. package/dist/components/snackbar/useSnackbar.js +4 -0
  129. package/dist/components/stepper-horizontal/StepperHorizontal.css +6 -0
  130. package/dist/components/stepper-horizontal/StepperHorizontal.d.ts +7 -0
  131. package/dist/components/stepper-horizontal/StepperHorizontal.js +48 -0
  132. package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.css +24 -0
  133. package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.d.ts +6 -0
  134. package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.js +16 -0
  135. package/dist/components/stepper-vertical/StepperVertical.d.ts +6 -0
  136. package/dist/components/stepper-vertical/StepperVertical.js +26 -0
  137. package/dist/components/stepper-vertical/step-vertical/StepVertical.css +10 -0
  138. package/dist/components/stepper-vertical/step-vertical/StepVertical.d.ts +11 -0
  139. package/dist/components/stepper-vertical/step-vertical/StepVertical.js +58 -0
  140. package/dist/components/tab/Tabs.css +285 -0
  141. package/dist/components/tab/Tabs.d.ts +23 -0
  142. package/dist/components/tab/Tabs.js +194 -0
  143. package/dist/components/tab/interfaces.d.ts +5 -0
  144. package/dist/components/tab/interfaces.js +0 -0
  145. package/dist/components/tab/tab-pane/TabPane.css +8 -0
  146. package/dist/components/tab/tab-pane/TabPane.d.ts +9 -0
  147. package/dist/components/tab/tab-pane/TabPane.js +18 -0
  148. package/dist/components/tab/useTabScroll.d.ts +25 -0
  149. package/dist/components/tab/useTabScroll.js +151 -0
  150. package/dist/components/table-header-cell/TableHeaderCell.d.ts +5 -0
  151. package/dist/components/table-header-cell/TableHeaderCell.js +21 -0
  152. package/dist/forms/checkbox/Checkbox.css +134 -0
  153. package/dist/forms/checkbox/Checkbox.d.ts +15 -0
  154. package/dist/forms/checkbox/Checkbox.js +80 -0
  155. package/dist/forms/radio/RadioButton.d.ts +14 -0
  156. package/dist/forms/radio/RadioButton.js +61 -0
  157. package/dist/forms/radio/RadioGroup.d.ts +12 -0
  158. package/dist/forms/radio/RadioGroup.js +50 -0
  159. package/dist/forms/radio/RadioGroupContext.d.ts +12 -0
  160. package/dist/forms/radio/RadioGroupContext.js +3 -0
  161. package/dist/forms/segment/Segment.d.ts +13 -0
  162. package/dist/forms/segment/Segment.js +59 -0
  163. package/dist/forms/segment/segment-control/SegmentControl.d.ts +14 -0
  164. package/dist/forms/segment/segment-control/SegmentControl.js +57 -0
  165. package/dist/forms/select/Select.css +160 -0
  166. package/dist/forms/select/Select.d.ts +26 -0
  167. package/dist/forms/select/Select.js +95 -0
  168. package/dist/forms/select/internal/HiddenInput.d.ts +8 -0
  169. package/dist/forms/select/internal/HiddenInput.js +15 -0
  170. package/dist/forms/select/internal/ListItem.d.ts +18 -0
  171. package/dist/forms/select/internal/ListItem.js +69 -0
  172. package/dist/forms/select/internal/SelectButton.d.ts +12 -0
  173. package/dist/forms/select/internal/SelectButton.js +49 -0
  174. package/dist/forms/select/internal/SelectButtonContent.d.ts +7 -0
  175. package/dist/forms/select/internal/SelectButtonContent.js +31 -0
  176. package/dist/forms/select/internal/SelectCheckbox.d.ts +4 -0
  177. package/dist/forms/select/internal/SelectCheckbox.js +13 -0
  178. package/dist/forms/select/internal/SelectLabel.d.ts +7 -0
  179. package/dist/forms/select/internal/SelectLabel.js +12 -0
  180. package/dist/forms/select/internal/SelectOptionsContainer.d.ts +17 -0
  181. package/dist/forms/select/internal/SelectOptionsContainer.js +103 -0
  182. package/dist/forms/select/internal/SelectScrollContainer.d.ts +8 -0
  183. package/dist/forms/select/internal/SelectScrollContainer.js +15 -0
  184. package/dist/forms/select/internal/SelectWrapper.d.ts +6 -0
  185. package/dist/forms/select/internal/SelectWrapper.js +12 -0
  186. package/dist/forms/select/internal/index.d.ts +6 -0
  187. package/dist/forms/select/internal/index.js +7 -0
  188. package/dist/forms/select/internal/utils.d.ts +7 -0
  189. package/dist/forms/select/internal/utils.js +30 -0
  190. package/dist/forms/select/select-option/SelectOption.d.ts +14 -0
  191. package/dist/forms/select/select-option/SelectOption.js +12 -0
  192. package/dist/forms/select/utils.d.ts +2 -0
  193. package/dist/forms/select/utils.js +12 -0
  194. package/dist/forms/slider/Slider.css +50 -0
  195. package/dist/forms/slider/Slider.d.ts +17 -0
  196. package/dist/forms/slider/Slider.js +93 -0
  197. package/dist/forms/switch/Switch.d.ts +12 -0
  198. package/dist/forms/switch/Switch.js +42 -0
  199. package/dist/forms/text-area/TextArea.css +14 -0
  200. package/dist/forms/text-area/TextArea.d.ts +22 -0
  201. package/dist/forms/text-area/TextArea.js +99 -0
  202. package/dist/forms/text-input/TextInput.d.ts +24 -0
  203. package/dist/forms/text-input/TextInput.js +74 -0
  204. package/dist/forms/time-picker/TimePicker.css +10 -0
  205. package/dist/forms/time-picker/TimePicker.d.ts +24 -0
  206. package/dist/forms/time-picker/TimePicker.js +140 -0
  207. package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.css +4 -0
  208. package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.d.ts +19 -0
  209. package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.js +202 -0
  210. package/dist/forms/time-picker/time-picker-dropdown/TimePickerInput.d.ts +9 -0
  211. package/dist/forms/time-picker/time-picker-dropdown/TimePickerInput.js +14 -0
  212. package/dist/index.d.ts +62 -0
  213. package/dist/index.js +59 -0
  214. package/dist/utils/index.d.ts +1 -0
  215. package/dist/utils/index.js +7 -0
  216. package/dist/utils/setRef.d.ts +1 -0
  217. package/dist/utils/setRef.js +5 -0
  218. package/dist/utils/types.d.ts +29 -0
  219. package/dist/utils/types.js +0 -0
  220. package/dist/utils/useControlled.d.ts +7 -0
  221. package/dist/utils/useControlled.js +20 -0
  222. package/dist/utils/useForkRef.d.ts +2 -0
  223. package/dist/utils/useForkRef.js +15 -0
  224. package/dist/utils/useId.d.ts +1 -0
  225. package/dist/utils/useId.js +20 -0
  226. package/dist/utils/useOnClickOutside.d.ts +2 -0
  227. package/dist/utils/useOnClickOutside.js +20 -0
  228. package/package.json +1 -1
@@ -0,0 +1,21 @@
1
+ import './ImageGallery.scss';
2
+ import { type ComponentPropsWithoutRef } from 'react';
3
+ import { type ModalBaseProps } from '../ModalBase';
4
+ import { type ImageDescriptiveContent } from './ImageGalleryContent';
5
+ export type ImageGalleryItemData = {
6
+ imageContent?: ImageDescriptiveContent;
7
+ containMode?: boolean;
8
+ } & ComponentPropsWithoutRef<'img'> & Record<string, unknown>;
9
+ export interface ImageGalleryProps extends ComponentPropsWithoutRef<'div'>, ModalBaseProps {
10
+ /** Index number of initial slide. */
11
+ startIndex: number;
12
+ images?: ImageGalleryItemData[];
13
+ thumbnailImages?: ImageGalleryItemData[];
14
+ /** Whether to show pagination controls. Can also accept a number in case images are passed as children */
15
+ pagination?: boolean | number;
16
+ showScaleButton?: boolean;
17
+ /** Whether to show descriptive content). Can also be used as a render prop called with the index of the current image */
18
+ descriptiveContent?: boolean | ((index: number) => React.ReactNode);
19
+ onSlideChanged?: (index: number) => void;
20
+ }
21
+ 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,103 @@
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 { ImageGalleryScale } from "./ImageGalleryScale.js";
8
+ import { ImageGallerySwiper } from "./ImageGallerySwiper.js";
9
+ import { ImageGalleryThumbsSwiper } from "./ImageGalleryThumbsSwiper.js";
10
+ import { CloseButton } from "./internal/CloseButton.js";
11
+ import { ImageGalleryContainer } from "./internal/ImageGalleryContainer.js";
12
+ import { ImageGalleryPagination } from "./internal/ImageGalleryPagination.js";
13
+ function getLength(pagination, images) {
14
+ let length = 0;
15
+ if ('number' == typeof pagination) length = pagination;
16
+ else if (true === pagination && images?.length) length = images.length;
17
+ return length;
18
+ }
19
+ const ImageGallery = /*#__PURE__*/ forwardRef(({ isOpen, startIndex, images, thumbnailImages, descriptiveContent, children, className, pagination, showScaleButton, onClose, onSlideChanged, ...props }, ref)=>{
20
+ const [currentIndex, setCurrentIndex] = useState(startIndex + 1);
21
+ const [thumbsSwiper, setThumbsSwiper] = useState(null);
22
+ const [scaleMode, setScaleMode] = useState(false);
23
+ function handleChange(index) {
24
+ setCurrentIndex(index + 1);
25
+ onSlideChanged?.(index);
26
+ }
27
+ function handleClose() {
28
+ if (scaleMode) return void setScaleMode(false);
29
+ setCurrentIndex(startIndex + 1);
30
+ setThumbsSwiper(null);
31
+ onClose?.();
32
+ }
33
+ function handleScale() {
34
+ setScaleMode(!scaleMode);
35
+ }
36
+ const hasDescriptiveContent = Boolean(descriptiveContent);
37
+ const classes = getClasses(thumbnailImages, hasDescriptiveContent, className);
38
+ const length = getLength(pagination, images);
39
+ return /*#__PURE__*/ jsxs(ModalBase, {
40
+ onClose: handleClose,
41
+ className: classes,
42
+ ...props,
43
+ isOpen: isOpen,
44
+ ref: ref,
45
+ children: [
46
+ isOpen && scaleMode && images && /*#__PURE__*/ jsx(ImageGalleryScale, {
47
+ images: images,
48
+ currentIndex: currentIndex,
49
+ onClose: handleScale
50
+ }),
51
+ isOpen && /*#__PURE__*/ jsxs(Fragment, {
52
+ children: [
53
+ /*#__PURE__*/ jsxs("div", {
54
+ className: "fwe-image-gallery-header",
55
+ children: [
56
+ /*#__PURE__*/ jsx(ImageGalleryPagination, {
57
+ currentIndex: currentIndex,
58
+ length: length
59
+ }),
60
+ showScaleButton ? /*#__PURE__*/ jsx("button", {
61
+ type: "button",
62
+ "aria-label": "scale up",
63
+ className: "fwe-image-gallery-scale-btn fwe-ml-auto",
64
+ onClick: handleScale
65
+ }) : null,
66
+ /*#__PURE__*/ jsx(CloseButton, {
67
+ showScaleButton: showScaleButton,
68
+ onClose: handleClose
69
+ })
70
+ ]
71
+ }),
72
+ /*#__PURE__*/ jsxs(ImageGalleryContainer, {
73
+ descriptiveContent: hasDescriptiveContent,
74
+ children: [
75
+ /*#__PURE__*/ jsx("div", {
76
+ className: "fwe-image-gallery-wrapper",
77
+ children: children || /*#__PURE__*/ jsxs(Fragment, {
78
+ children: [
79
+ /*#__PURE__*/ jsx(ImageGallerySwiper, {
80
+ images: images,
81
+ onSlideChanged: handleChange,
82
+ thumbsSwiper: thumbsSwiper,
83
+ startIndex: startIndex
84
+ }),
85
+ thumbnailImages && /*#__PURE__*/ jsx(ImageGalleryThumbsSwiper, {
86
+ images: thumbnailImages,
87
+ setThumbsSwiper: setThumbsSwiper
88
+ })
89
+ ]
90
+ })
91
+ }),
92
+ images && hasDescriptiveContent && /*#__PURE__*/ jsx(ImageGalleryContent, {
93
+ imageContent: images?.[currentIndex - 1]?.imageContent
94
+ }),
95
+ 'function' == typeof descriptiveContent ? descriptiveContent?.(currentIndex - 1) : null
96
+ ]
97
+ })
98
+ ]
99
+ })
100
+ ]
101
+ });
102
+ });
103
+ 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 10 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,6 @@
1
+ import type { ImageGalleryItemData } from './ImageGallery';
2
+ export declare function ImageGalleryScale({ images, currentIndex, onClose, }: {
3
+ readonly images?: ImageGalleryItemData[];
4
+ readonly currentIndex: number;
5
+ readonly onClose?: () => void;
6
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,15 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ function ImageGalleryScale({ images, currentIndex, onClose }) {
3
+ if (!images || 0 === images.length) return null;
4
+ return /*#__PURE__*/ jsx("button", {
5
+ className: "fr-image-gallery-scale-container",
6
+ type: "button",
7
+ "aria-label": "close",
8
+ onClick: onClose,
9
+ children: /*#__PURE__*/ jsx("img", {
10
+ ...images[currentIndex - 1],
11
+ alt: images[currentIndex - 1].alt
12
+ })
13
+ });
14
+ }
15
+ export { ImageGalleryScale };
@@ -0,0 +1,13 @@
1
+ import { type SwiperClass } from 'swiper/react';
2
+ import type { ImageGalleryItemData } from './ImageGallery';
3
+ interface ImageGallerySwiperProps {
4
+ readonly images?: ImageGalleryItemData[];
5
+ onSlideChanged?: (value: number) => void;
6
+ thumbsSwiper: SwiperClass | null;
7
+ startIndex?: number;
8
+ }
9
+ export declare function ImageGallerySwiper({ images, onSlideChanged, thumbsSwiper, startIndex, }: ImageGallerySwiperProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare namespace ImageGallerySwiper {
11
+ var displayName: string;
12
+ }
13
+ export {};
@@ -0,0 +1,40 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import classnames from "classnames";
3
+ import { Navigation, Thumbs, Zoom } from "swiper/modules";
4
+ import { Swiper, SwiperSlide } from "swiper/react";
5
+ function ImageGallerySwiper({ images, onSlideChanged, thumbsSwiper, startIndex }) {
6
+ return /*#__PURE__*/ jsx(Swiper, {
7
+ initialSlide: startIndex,
8
+ thumbs: {
9
+ swiper: thumbsSwiper
10
+ },
11
+ modules: [
12
+ Zoom,
13
+ Thumbs,
14
+ Navigation
15
+ ],
16
+ navigation: {
17
+ nextEl: '.fwe-navigate-btn-up',
18
+ prevEl: '.fwe-navigate-btn-down'
19
+ },
20
+ zoom: true,
21
+ className: "gallery-swiper fwe-image-gallery",
22
+ spaceBetween: 0,
23
+ onSlideChange: (slider)=>onSlideChanged?.(slider.activeIndex),
24
+ children: images?.map(({ containMode, alt, imageContent, ...image })=>/*#__PURE__*/ jsx(SwiperSlide, {
25
+ zoom: containMode,
26
+ children: /*#__PURE__*/ jsx("div", {
27
+ className: "swiper-zoom-container",
28
+ children: /*#__PURE__*/ jsx("img", {
29
+ ...image,
30
+ className: classnames(image.className, {
31
+ 'fr-image-gallery-item-contain': containMode
32
+ }),
33
+ alt: alt
34
+ })
35
+ })
36
+ }, image.src))
37
+ });
38
+ }
39
+ ImageGallerySwiper.displayName = 'Swiper';
40
+ export { ImageGallerySwiper };
@@ -0,0 +1,8 @@
1
+ import { type SwiperClass } from 'swiper/react';
2
+ import type { ImageGalleryItemData } from './ImageGallery';
3
+ interface ImageGalleryThumbsSwiperProps {
4
+ readonly images?: ImageGalleryItemData[];
5
+ readonly setThumbsSwiper: React.Dispatch<React.SetStateAction<SwiperClass | null>>;
6
+ }
7
+ export declare function ImageGalleryThumbsSwiper({ images, setThumbsSwiper, }: ImageGalleryThumbsSwiperProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,27 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import classnames from "classnames";
3
+ import { Thumbs } from "swiper/modules";
4
+ import { Swiper, SwiperSlide } from "swiper/react";
5
+ function ImageGalleryThumbsSwiper({ images, setThumbsSwiper }) {
6
+ return /*#__PURE__*/ jsx(Swiper, {
7
+ freeMode: true,
8
+ slidesPerView: "auto",
9
+ className: "thumbs-swiper fwe-image-gallery-thumbs",
10
+ modules: [
11
+ Thumbs
12
+ ],
13
+ watchSlidesProgress: true,
14
+ onSwiper: setThumbsSwiper,
15
+ children: images?.map(({ containMode, alt, imageContent, ...image })=>/*#__PURE__*/ jsx(SwiperSlide, {
16
+ zoom: containMode,
17
+ children: /*#__PURE__*/ jsx("img", {
18
+ ...image,
19
+ className: classnames(image.className, {
20
+ 'fr-image-gallery-item-thumb-contain': containMode
21
+ }),
22
+ alt: alt
23
+ })
24
+ }, image.src))
25
+ });
26
+ }
27
+ export { ImageGalleryThumbsSwiper };
@@ -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,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;
@@ -0,0 +1,100 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import "./Pagination.css";
3
+ import classnames from "classnames";
4
+ import { useEffect, useState } from "react";
5
+ var Pagination_PaginationType = /*#__PURE__*/ function(PaginationType) {
6
+ PaginationType["Simple"] = "SIMPLE";
7
+ PaginationType["Numeric"] = "NUMERIC";
8
+ PaginationType["Dots"] = "DOTS";
9
+ return PaginationType;
10
+ }({});
11
+ function Pagination(props) {
12
+ const { pageMax, onChange, pageCurrent, defaultPageCurrent = 1, type = "NUMERIC", className } = props;
13
+ const controlled = void 0 !== pageCurrent;
14
+ const dotArray = Array.from(new Array(pageMax).keys());
15
+ const [innerPageCurrent, setInnerPageCurrent] = useState(controlled ? pageCurrent : defaultPageCurrent);
16
+ useEffect(()=>{
17
+ if (controlled) setInnerPageCurrent(pageCurrent);
18
+ }, [
19
+ pageCurrent,
20
+ controlled
21
+ ]);
22
+ function handleChange(newPage) {
23
+ if (!controlled) setInnerPageCurrent(newPage);
24
+ if (onChange) onChange(newPage);
25
+ }
26
+ function onBtnDown() {
27
+ if (innerPageCurrent > 1) {
28
+ const newPageCurrent = innerPageCurrent - 1;
29
+ handleChange(newPageCurrent);
30
+ }
31
+ }
32
+ function onBtnUp() {
33
+ if (innerPageCurrent < pageMax) {
34
+ const newPageCurrent = innerPageCurrent + 1;
35
+ handleChange(newPageCurrent);
36
+ }
37
+ }
38
+ function onDotClick(index) {
39
+ const newPageCurrent = index + 1;
40
+ handleChange(newPageCurrent);
41
+ }
42
+ return /*#__PURE__*/ jsxs(Fragment, {
43
+ children: [
44
+ "DOTS" !== type && /*#__PURE__*/ jsxs("div", {
45
+ className: classnames('fwe-pagination fwe-p-m', {
46
+ 'fwe-d-none': pageMax < 2
47
+ }, className),
48
+ children: [
49
+ /*#__PURE__*/ jsx("button", {
50
+ className: classnames('fwe-navigate-btn-down', {
51
+ 'fwe-disabled': innerPageCurrent <= 1
52
+ }),
53
+ onClick: onBtnDown,
54
+ type: "button",
55
+ "aria-label": "navigate-btn-down"
56
+ }),
57
+ "NUMERIC" === type && /*#__PURE__*/ jsxs(Fragment, {
58
+ children: [
59
+ /*#__PURE__*/ jsx("span", {
60
+ className: "fwe-page-current",
61
+ children: innerPageCurrent
62
+ }),
63
+ /*#__PURE__*/ jsx("span", {
64
+ className: "fwe-page-max",
65
+ children: pageMax
66
+ })
67
+ ]
68
+ }),
69
+ /*#__PURE__*/ jsx("button", {
70
+ className: classnames('fwe-navigate-btn-up', {
71
+ 'fwe-disabled': innerPageCurrent >= pageMax,
72
+ 'fwe-ml-4': "SIMPLE" === type
73
+ }),
74
+ onClick: onBtnUp,
75
+ type: "button",
76
+ "aria-label": "navigate-btn-up"
77
+ })
78
+ ]
79
+ }),
80
+ "DOTS" === type && /*#__PURE__*/ jsx("div", {
81
+ className: classnames('fwe-p-m', {
82
+ 'fwe-d-none': pageMax < 2
83
+ }, className),
84
+ children: /*#__PURE__*/ jsx("div", {
85
+ className: "fwe-pagination",
86
+ children: dotArray.map((index)=>/*#__PURE__*/ jsx("button", {
87
+ type: "button",
88
+ className: classnames('fwe-page-dot', {
89
+ 'fwe-selected': index + 1 === innerPageCurrent
90
+ }),
91
+ onClick: ()=>onDotClick(index),
92
+ "aria-label": `Go to page ${index + 1}`,
93
+ "aria-current": index + 1 === innerPageCurrent ? 'page' : void 0
94
+ }, index))
95
+ })
96
+ })
97
+ ]
98
+ });
99
+ }
100
+ export { Pagination, Pagination_PaginationType as PaginationType };
@@ -0,0 +1,21 @@
1
+ .fr-legend {
2
+ margin: 16px;
3
+ line-height: 24px;
4
+ display: table;
5
+ }
6
+
7
+ .fr-legend .fr-legend-content {
8
+ display: table-row;
9
+ }
10
+
11
+ .fr-legend .fr-legend-content dt {
12
+ margin: 0;
13
+ padding-right: 8px;
14
+ display: table-cell;
15
+ }
16
+
17
+ .fr-legend .fr-legend-content dd {
18
+ margin: 0;
19
+ display: table-cell;
20
+ }
21
+
@@ -0,0 +1,11 @@
1
+ import { type PopoverProps } from '../popover/Popover';
2
+ import './Legend.scss';
3
+ interface PopoverLegendItem {
4
+ name: string;
5
+ text: string;
6
+ }
7
+ export interface LegendProps extends Omit<PopoverProps, 'popoverContent'> {
8
+ items: PopoverLegendItem[];
9
+ }
10
+ export declare function Legend({ items, ...props }: Readonly<LegendProps>): import("react/jsx-runtime").JSX.Element;
11
+ export {};