@festo-ui/react 9.0.0-dev.717 → 9.0.0-dev.719
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/accordion/Accordion.css +4 -0
- package/dist/components/accordion/Accordion.d.ts +10 -0
- package/dist/components/accordion/Accordion.js +41 -0
- package/dist/components/accordion/AccordionContext.d.ts +11 -0
- package/dist/components/accordion/AccordionContext.js +3 -0
- package/dist/components/accordion/accordion-header/AccordionHeader.css +11 -0
- package/dist/components/accordion/accordion-header/AccordionHeader.d.ts +2 -0
- package/dist/components/accordion/accordion-header/AccordionHeader.js +11 -0
- package/dist/components/accordion/accordion-item/AccordionItem.css +64 -0
- package/dist/components/accordion/accordion-item/AccordionItem.d.ts +8 -0
- package/dist/components/accordion/accordion-item/AccordionItem.js +60 -0
- package/dist/components/accordion/accordion-item/AccordionItemContext.d.ts +7 -0
- package/dist/components/accordion/accordion-item/AccordionItemContext.js +3 -0
- package/dist/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.css +76 -0
- package/dist/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.d.ts +2 -0
- package/dist/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.js +61 -0
- package/dist/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.css +11 -0
- package/dist/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.d.ts +2 -0
- package/dist/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.js +20 -0
- package/dist/components/bottom-sheet/BottomSheet.css +18 -0
- package/dist/components/bottom-sheet/BottomSheet.d.ts +12 -0
- package/dist/components/bottom-sheet/BottomSheet.js +101 -0
- package/dist/components/breadcrumb/Breadcrumb.d.ts +13 -0
- package/dist/components/breadcrumb/Breadcrumb.js +32 -0
- package/dist/components/button/Button.d.ts +11 -0
- package/dist/components/button/Button.js +36 -0
- package/dist/components/card/Card.d.ts +4 -0
- package/dist/components/card/Card.js +9 -0
- package/dist/components/card/CardBody.d.ts +5 -0
- package/dist/components/card/CardBody.js +15 -0
- package/dist/components/card/CardHeader.d.ts +8 -0
- package/dist/components/card/CardHeader.js +31 -0
- package/dist/components/card/CardHeader.stories.helper.js +7 -0
- package/dist/components/card/CardNotification.d.ts +6 -0
- package/dist/components/card/CardNotification.js +26 -0
- package/dist/components/chips/chip/Chip.d.ts +17 -0
- package/dist/components/chips/chip/Chip.js +38 -0
- package/dist/components/chips/chip-container/ChipContainer.d.ts +5 -0
- package/dist/components/chips/chip-container/ChipContainer.js +12 -0
- package/dist/components/icon-wrapper/IconWrapper.d.ts +3 -0
- package/dist/components/icon-wrapper/IconWrapper.js +13 -0
- package/dist/components/link-button/LinkButton.d.ts +8 -0
- package/dist/components/link-button/LinkButton.js +26 -0
- package/dist/components/loading-indicator/LoadingIndicator.d.ts +5 -0
- package/dist/components/loading-indicator/LoadingIndicator.js +41 -0
- package/dist/components/mobile-flyout/MobileFlyout.d.ts +11 -0
- package/dist/components/mobile-flyout/MobileFlyout.js +88 -0
- package/dist/components/mobile-flyout/MobileFlyoutContext.d.ts +8 -0
- package/dist/components/mobile-flyout/MobileFlyoutContext.js +3 -0
- package/dist/components/mobile-flyout/mobile-flyout-item/MobileFlyoutItem.d.ts +17 -0
- package/dist/components/mobile-flyout/mobile-flyout-item/MobileFlyoutItem.js +36 -0
- package/dist/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.css +5 -0
- package/dist/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.d.ts +8 -0
- package/dist/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.js +35 -0
- package/dist/components/modals/AlertModal.d.ts +12 -0
- package/dist/components/modals/AlertModal.js +53 -0
- package/dist/components/modals/ConfirmModal.d.ts +11 -0
- package/dist/components/modals/ConfirmModal.js +46 -0
- package/dist/components/modals/CustomModal.d.ts +8 -0
- package/dist/components/modals/CustomModal.js +38 -0
- package/dist/components/modals/Modal.css +39 -0
- package/dist/components/modals/Modal.d.ts +8 -0
- package/dist/components/modals/Modal.js +31 -0
- package/dist/components/modals/ModalBase.d.ts +9 -0
- package/dist/components/modals/ModalBase.js +124 -0
- package/dist/components/modals/ModalFooter.d.ts +2 -0
- package/dist/components/modals/ModalFooter.js +12 -0
- package/dist/components/modals/Prompt.d.ts +15 -0
- package/dist/components/modals/Prompt.js +58 -0
- package/dist/components/modals/image-gallery/ImageGallery.css +790 -0
- package/dist/components/modals/image-gallery/ImageGallery.d.ts +18 -0
- package/dist/components/modals/image-gallery/ImageGallery.helper.d.ts +2 -0
- package/dist/components/modals/image-gallery/ImageGallery.helper.js +13 -0
- package/dist/components/modals/image-gallery/ImageGallery.js +75 -0
- package/dist/components/modals/image-gallery/ImageGallery.stories.helper.js +112 -0
- package/dist/components/modals/image-gallery/ImageGalleryContent.d.ts +9 -0
- package/dist/components/modals/image-gallery/ImageGalleryContent.js +15 -0
- package/dist/components/modals/image-gallery/ImageGalleryContext.d.ts +10 -0
- package/dist/components/modals/image-gallery/ImageGalleryContext.js +4 -0
- package/dist/components/modals/image-gallery/ImageGallerySwiper.d.ts +8 -0
- package/dist/components/modals/image-gallery/ImageGallerySwiper.js +29 -0
- package/dist/components/modals/image-gallery/ImageGalleryThumbsSwiper.d.ts +5 -0
- package/dist/components/modals/image-gallery/ImageGalleryThumbsSwiper.js +23 -0
- package/dist/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.css +10 -0
- package/dist/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.d.ts +11 -0
- package/dist/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.js +24 -0
- package/dist/components/modals/image-gallery/internal/BaseGallery.d.ts +17 -0
- package/dist/components/modals/image-gallery/internal/BaseGallery.js +50 -0
- package/dist/components/modals/image-gallery/internal/CloseButton.d.ts +6 -0
- package/dist/components/modals/image-gallery/internal/CloseButton.js +14 -0
- package/dist/components/modals/image-gallery/internal/ImageGalleryContainer.d.ts +5 -0
- package/dist/components/modals/image-gallery/internal/ImageGalleryContainer.js +8 -0
- package/dist/components/modals/image-gallery/internal/ImageGalleryPagination.d.ts +5 -0
- package/dist/components/modals/image-gallery/internal/ImageGalleryPagination.js +29 -0
- package/dist/components/modals/image-gallery/internal/ScaleButton.d.ts +4 -0
- package/dist/components/modals/image-gallery/internal/ScaleButton.js +17 -0
- package/dist/components/pagination/Pagination.css +10 -0
- package/dist/components/pagination/Pagination.d.ts +15 -0
- package/dist/components/pagination/Pagination.js +100 -0
- package/dist/components/popovers/legend/Legend.css +21 -0
- package/dist/components/popovers/legend/Legend.d.ts +11 -0
- package/dist/components/popovers/legend/Legend.js +24 -0
- package/dist/components/popovers/popover/Popover.css +56 -0
- package/dist/components/popovers/popover/Popover.d.ts +20 -0
- package/dist/components/popovers/popover/Popover.js +106 -0
- package/dist/components/popovers/popover-menu/PopoverMenu.css +20 -0
- package/dist/components/popovers/popover-menu/PopoverMenu.d.ts +8 -0
- package/dist/components/popovers/popover-menu/PopoverMenu.js +37 -0
- package/dist/components/popovers/popover-menu/PopoverMenuContext.d.ts +3 -0
- package/dist/components/popovers/popover-menu/PopoverMenuContext.js +5 -0
- package/dist/components/popovers/popover-menu-item/PopoverMenuItem.css +35 -0
- package/dist/components/popovers/popover-menu-item/PopoverMenuItem.d.ts +10 -0
- package/dist/components/popovers/popover-menu-item/PopoverMenuItem.js +30 -0
- package/dist/components/popovers/tooltip/Tooltip.d.ts +5 -0
- package/dist/components/popovers/tooltip/Tooltip.js +12 -0
- package/dist/components/progress/Progress.d.ts +7 -0
- package/dist/components/progress/Progress.js +26 -0
- package/dist/components/search-input/ClearButton.d.ts +2 -0
- package/dist/components/search-input/ClearButton.js +10 -0
- package/dist/components/search-input/SearchInput.css +13 -0
- package/dist/components/search-input/SearchInput.d.ts +14 -0
- package/dist/components/search-input/SearchInput.js +61 -0
- package/dist/components/search-input/SearchSuggestion.d.ts +17 -0
- package/dist/components/search-input/SearchSuggestion.js +21 -0
- package/dist/components/search-input/useSearchInput.d.ts +13 -0
- package/dist/components/search-input/useSearchInput.js +85 -0
- package/dist/components/snackbar/Snackbar.css +55 -0
- package/dist/components/snackbar/Snackbar.d.ts +21 -0
- package/dist/components/snackbar/Snackbar.js +78 -0
- package/dist/components/snackbar/SnackbarContext.d.ts +7 -0
- package/dist/components/snackbar/SnackbarContext.js +3 -0
- package/dist/components/snackbar/SnackbarProvider.d.ts +8 -0
- package/dist/components/snackbar/SnackbarProvider.js +66 -0
- package/dist/components/snackbar/useSnackbar.d.ts +2 -0
- package/dist/components/snackbar/useSnackbar.js +4 -0
- package/dist/components/stepper-horizontal/StepperHorizontal.css +6 -0
- package/dist/components/stepper-horizontal/StepperHorizontal.d.ts +7 -0
- package/dist/components/stepper-horizontal/StepperHorizontal.js +48 -0
- package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.css +24 -0
- package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.d.ts +6 -0
- package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.js +16 -0
- package/dist/components/stepper-vertical/StepperVertical.d.ts +6 -0
- package/dist/components/stepper-vertical/StepperVertical.js +26 -0
- package/dist/components/stepper-vertical/step-vertical/StepVertical.css +10 -0
- package/dist/components/stepper-vertical/step-vertical/StepVertical.d.ts +11 -0
- package/dist/components/stepper-vertical/step-vertical/StepVertical.js +58 -0
- package/dist/components/tab/Tabs.css +285 -0
- package/dist/components/tab/Tabs.d.ts +23 -0
- package/dist/components/tab/Tabs.js +194 -0
- package/dist/components/tab/interfaces.d.ts +5 -0
- package/dist/components/tab/interfaces.js +0 -0
- package/dist/components/tab/tab-pane/TabPane.css +8 -0
- package/dist/components/tab/tab-pane/TabPane.d.ts +9 -0
- package/dist/components/tab/tab-pane/TabPane.js +18 -0
- package/dist/components/tab/useTabScroll.d.ts +25 -0
- package/dist/components/tab/useTabScroll.js +151 -0
- package/dist/components/table-header-cell/TableHeaderCell.d.ts +5 -0
- package/dist/components/table-header-cell/TableHeaderCell.js +21 -0
- package/dist/forms/checkbox/Checkbox.css +134 -0
- package/dist/forms/checkbox/Checkbox.d.ts +15 -0
- package/dist/forms/checkbox/Checkbox.js +80 -0
- package/dist/forms/radio/RadioButton.d.ts +14 -0
- package/dist/forms/radio/RadioButton.js +61 -0
- package/dist/forms/radio/RadioGroup.d.ts +12 -0
- package/dist/forms/radio/RadioGroup.js +50 -0
- package/dist/forms/radio/RadioGroupContext.d.ts +12 -0
- package/dist/forms/radio/RadioGroupContext.js +3 -0
- package/dist/forms/segment/Segment.d.ts +13 -0
- package/dist/forms/segment/Segment.js +59 -0
- package/dist/forms/segment/segment-control/SegmentControl.d.ts +14 -0
- package/dist/forms/segment/segment-control/SegmentControl.js +57 -0
- package/dist/forms/select/Select.css +160 -0
- package/dist/forms/select/Select.d.ts +26 -0
- package/dist/forms/select/Select.js +95 -0
- package/dist/forms/select/internal/HiddenInput.d.ts +8 -0
- package/dist/forms/select/internal/HiddenInput.js +15 -0
- package/dist/forms/select/internal/ListItem.d.ts +18 -0
- package/dist/forms/select/internal/ListItem.js +69 -0
- package/dist/forms/select/internal/SelectButton.d.ts +12 -0
- package/dist/forms/select/internal/SelectButton.js +49 -0
- package/dist/forms/select/internal/SelectButtonContent.d.ts +7 -0
- package/dist/forms/select/internal/SelectButtonContent.js +31 -0
- package/dist/forms/select/internal/SelectCheckbox.d.ts +4 -0
- package/dist/forms/select/internal/SelectCheckbox.js +13 -0
- package/dist/forms/select/internal/SelectLabel.d.ts +7 -0
- package/dist/forms/select/internal/SelectLabel.js +12 -0
- package/dist/forms/select/internal/SelectOptionsContainer.d.ts +17 -0
- package/dist/forms/select/internal/SelectOptionsContainer.js +103 -0
- package/dist/forms/select/internal/SelectScrollContainer.d.ts +8 -0
- package/dist/forms/select/internal/SelectScrollContainer.js +15 -0
- package/dist/forms/select/internal/SelectWrapper.d.ts +6 -0
- package/dist/forms/select/internal/SelectWrapper.js +12 -0
- package/dist/forms/select/internal/index.d.ts +6 -0
- package/dist/forms/select/internal/index.js +7 -0
- package/dist/forms/select/internal/utils.d.ts +7 -0
- package/dist/forms/select/internal/utils.js +30 -0
- package/dist/forms/select/select-option/SelectOption.d.ts +14 -0
- package/dist/forms/select/select-option/SelectOption.js +12 -0
- package/dist/forms/select/utils.d.ts +2 -0
- package/dist/forms/select/utils.js +12 -0
- package/dist/forms/slider/Slider.css +50 -0
- package/dist/forms/slider/Slider.d.ts +17 -0
- package/dist/forms/slider/Slider.js +93 -0
- package/dist/forms/switch/Switch.d.ts +12 -0
- package/dist/forms/switch/Switch.js +42 -0
- package/dist/forms/text-area/TextArea.css +14 -0
- package/dist/forms/text-area/TextArea.d.ts +22 -0
- package/dist/forms/text-area/TextArea.js +99 -0
- package/dist/forms/text-input/TextInput.d.ts +24 -0
- package/dist/forms/text-input/TextInput.js +74 -0
- package/dist/forms/time-picker/TimePicker.css +10 -0
- package/dist/forms/time-picker/TimePicker.d.ts +24 -0
- package/dist/forms/time-picker/TimePicker.js +140 -0
- package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.css +4 -0
- package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.d.ts +19 -0
- package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.js +202 -0
- package/dist/forms/time-picker/time-picker-dropdown/TimePickerInput.d.ts +9 -0
- package/dist/forms/time-picker/time-picker-dropdown/TimePickerInput.js +14 -0
- package/dist/index.d.ts +63 -0
- package/dist/index.js +60 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/setRef.d.ts +1 -0
- package/dist/utils/setRef.js +5 -0
- package/dist/utils/types.d.ts +29 -0
- package/dist/utils/types.js +0 -0
- package/dist/utils/useControlled.d.ts +7 -0
- package/dist/utils/useControlled.js +20 -0
- package/dist/utils/useForkRef.d.ts +2 -0
- package/dist/utils/useForkRef.js +15 -0
- package/dist/utils/useId.d.ts +1 -0
- package/dist/utils/useId.js +20 -0
- package/dist/utils/useOnClickOutside.d.ts +2 -0
- package/dist/utils/useOnClickOutside.js +20 -0
- package/package.json +1 -2
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import './Accordion.scss';
|
|
2
|
+
import { type ComponentPropsWithoutRef } from 'react';
|
|
3
|
+
export interface AccordionProps extends ComponentPropsWithoutRef<'div'> {
|
|
4
|
+
showMore?: string;
|
|
5
|
+
showLess?: string;
|
|
6
|
+
keepItemsOpen?: boolean;
|
|
7
|
+
transparent?: boolean;
|
|
8
|
+
highlighted?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const Accordion: (props: AccordionProps & import("react").RefAttributes<HTMLDivElement>) => React.ReactElement | null;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import "./Accordion.css";
|
|
3
|
+
import classnames from "classnames";
|
|
4
|
+
import { forwardRef, useCallback, useMemo, useRef, useState } from "react";
|
|
5
|
+
import { AccordionContext } from "./AccordionContext.js";
|
|
6
|
+
let nextId = 0;
|
|
7
|
+
const Accordion = /*#__PURE__*/ forwardRef(({ children, showMore = 'Show more', showLess = 'Show less', keepItemsOpen = true, className, transparent = false, highlighted = true, ...props }, ref)=>{
|
|
8
|
+
const componentId = useRef(`accordion-${++nextId}`);
|
|
9
|
+
const [expanded, setExpanded] = useState(false);
|
|
10
|
+
const handleChange = useCallback((id, newExpanded)=>{
|
|
11
|
+
setExpanded(newExpanded ? id : false);
|
|
12
|
+
}, []);
|
|
13
|
+
const contextValue = useMemo(()=>({
|
|
14
|
+
showMore,
|
|
15
|
+
showLess,
|
|
16
|
+
parentId: componentId.current,
|
|
17
|
+
keepItemsOpen,
|
|
18
|
+
expanded,
|
|
19
|
+
toggle: handleChange,
|
|
20
|
+
highlighted
|
|
21
|
+
}), [
|
|
22
|
+
expanded,
|
|
23
|
+
handleChange,
|
|
24
|
+
keepItemsOpen,
|
|
25
|
+
showLess,
|
|
26
|
+
showMore,
|
|
27
|
+
highlighted
|
|
28
|
+
]);
|
|
29
|
+
return /*#__PURE__*/ jsx(AccordionContext.Provider, {
|
|
30
|
+
value: contextValue,
|
|
31
|
+
children: /*#__PURE__*/ jsx("div", {
|
|
32
|
+
ref: ref,
|
|
33
|
+
className: classnames('fr-accordion', {
|
|
34
|
+
'fwe-bg-white': !transparent
|
|
35
|
+
}, className),
|
|
36
|
+
...props,
|
|
37
|
+
children: children
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
export { Accordion };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface ContextProps {
|
|
2
|
+
showMore: string;
|
|
3
|
+
showLess: string;
|
|
4
|
+
parentId: string;
|
|
5
|
+
keepItemsOpen: boolean;
|
|
6
|
+
expanded: boolean | string;
|
|
7
|
+
toggle: (id: string, expanded: boolean) => void;
|
|
8
|
+
highlighted: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const AccordionContext: import("react").Context<Partial<ContextProps>>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
.fr-accordion-header {
|
|
2
|
+
height: 48px;
|
|
3
|
+
font-size: var(--fwe-font-size-md);
|
|
4
|
+
font-weight: var(--fwe-font-weight-bold);
|
|
5
|
+
color: var(--fwe-text);
|
|
6
|
+
border-bottom: 1px solid var(--fwe-gray-100);
|
|
7
|
+
align-items: center;
|
|
8
|
+
padding: 0 16px 0 24px;
|
|
9
|
+
display: flex;
|
|
10
|
+
}
|
|
11
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import "./AccordionHeader.css";
|
|
3
|
+
import classnames from "classnames";
|
|
4
|
+
import { forwardRef } from "react";
|
|
5
|
+
const AccordionHeader = /*#__PURE__*/ forwardRef(({ children, className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
|
|
6
|
+
ref: ref,
|
|
7
|
+
className: classnames('fr-accordion-header', className),
|
|
8
|
+
...props,
|
|
9
|
+
children: children
|
|
10
|
+
}));
|
|
11
|
+
export { AccordionHeader };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
.fr-accordion-item {
|
|
2
|
+
border-top: 1px solid var(--fwe-gray-100);
|
|
3
|
+
border-bottom: 1px solid var(--fwe-gray-100);
|
|
4
|
+
padding: 0 16px 0 24px;
|
|
5
|
+
position: relative;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.fr-accordion-item-link {
|
|
9
|
+
color: var(--fwe-caerul);
|
|
10
|
+
font-size: var(--fwe-font-size-md);
|
|
11
|
+
pointer-events: none;
|
|
12
|
+
display: none;
|
|
13
|
+
position: absolute;
|
|
14
|
+
top: 24px;
|
|
15
|
+
right: 24px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.fr-accordion-item.fr-accordion-item--highlighted:before {
|
|
19
|
+
content: "";
|
|
20
|
+
background-color: var(--fwe-caerul);
|
|
21
|
+
width: 4px;
|
|
22
|
+
height: 0;
|
|
23
|
+
display: block;
|
|
24
|
+
position: absolute;
|
|
25
|
+
top: 0;
|
|
26
|
+
left: 0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.fr-accordion-item:after {
|
|
30
|
+
pointer-events: none;
|
|
31
|
+
content: "";
|
|
32
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgzMnYzMkgweiIvPjxwYXRoIGZpbGw9IiMzMzMiIGQ9Im0xNiAyMi04LjcwNy04LjcwNyAxLjQxNC0xLjQxNEwxNiAxOS4xNzJsNy4yOTMtNy4yOTMgMS40MTQgMS40MTRMMTYgMjJ6IiAvPjwvc3ZnPg==);
|
|
33
|
+
width: 32px;
|
|
34
|
+
height: 32px;
|
|
35
|
+
transition: transform .2s;
|
|
36
|
+
position: absolute;
|
|
37
|
+
top: 21px;
|
|
38
|
+
right: 16px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.fr-accordion-item--expanded .fr-accordion-item-header {
|
|
42
|
+
font-weight: var(--fwe-font-weight-bold);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.fr-accordion-item--expanded .fr-accordion-item-body {
|
|
46
|
+
height: auto;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.fr-accordion-item--expanded:after {
|
|
50
|
+
transform: rotate(-180deg);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.fr-accordion-item--expanded.fr-accordion-item--highlighted:before {
|
|
54
|
+
height: 100%;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.fr-accordion-item--collapsed .fr-accordion-item-body {
|
|
58
|
+
height: 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.fr-accordion-item--collapsed .fr-accordion-item-header {
|
|
62
|
+
font-weight: var(--fwe-font-weight-normal);
|
|
63
|
+
}
|
|
64
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import './AccordionItem.scss';
|
|
2
|
+
import { type ComponentPropsWithoutRef } from 'react';
|
|
3
|
+
export interface AccordionItemProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
|
|
4
|
+
expanded?: boolean;
|
|
5
|
+
defaultExpanded?: boolean;
|
|
6
|
+
onChange?: (event: React.SyntheticEvent, expanded: boolean) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare const AccordionItem: (props: AccordionItemProps & import("react").RefAttributes<HTMLDivElement>) => React.ReactElement | null;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import "./AccordionItem.css";
|
|
3
|
+
import classnames from "classnames";
|
|
4
|
+
import { forwardRef, useCallback, useContext, useMemo, useRef } from "react";
|
|
5
|
+
import { useControlled } from "../../../utils/useControlled.js";
|
|
6
|
+
import { AccordionContext } from "../AccordionContext.js";
|
|
7
|
+
import { AccordionItemContext } from "./AccordionItemContext.js";
|
|
8
|
+
let nextId = 0;
|
|
9
|
+
const AccordionItem = /*#__PURE__*/ forwardRef(({ expanded: expandedProp, defaultExpanded = false, children, onChange, className, ...props }, ref)=>{
|
|
10
|
+
const { showLess, showMore, parentId, keepItemsOpen, expanded: expandedContext, toggle: accordionToggle, highlighted } = useContext(AccordionContext);
|
|
11
|
+
const componentId = useRef(`accordion-item-${++nextId}`);
|
|
12
|
+
const id = `${parentId}-${componentId.current}`;
|
|
13
|
+
const controlledExpanded = keepItemsOpen ? expandedProp : expandedContext === id;
|
|
14
|
+
const [expanded, setExpanded] = useControlled({
|
|
15
|
+
controlled: controlledExpanded,
|
|
16
|
+
default: defaultExpanded
|
|
17
|
+
});
|
|
18
|
+
const linkText = expanded ? showLess : showMore;
|
|
19
|
+
const handleChange = useCallback((event)=>{
|
|
20
|
+
if (onChange) onChange(event, !expanded);
|
|
21
|
+
if (!keepItemsOpen) accordionToggle?.(id, !expanded);
|
|
22
|
+
setExpanded(!expanded);
|
|
23
|
+
}, [
|
|
24
|
+
accordionToggle,
|
|
25
|
+
expanded,
|
|
26
|
+
id,
|
|
27
|
+
keepItemsOpen,
|
|
28
|
+
onChange,
|
|
29
|
+
setExpanded
|
|
30
|
+
]);
|
|
31
|
+
const contextValue = useMemo(()=>({
|
|
32
|
+
expanded,
|
|
33
|
+
toggle: handleChange,
|
|
34
|
+
id
|
|
35
|
+
}), [
|
|
36
|
+
expanded,
|
|
37
|
+
handleChange,
|
|
38
|
+
id
|
|
39
|
+
]);
|
|
40
|
+
return /*#__PURE__*/ jsx(AccordionItemContext.Provider, {
|
|
41
|
+
value: contextValue,
|
|
42
|
+
children: /*#__PURE__*/ jsxs("div", {
|
|
43
|
+
ref: ref,
|
|
44
|
+
className: classnames('fr-accordion-item', {
|
|
45
|
+
'fr-accordion-item--collapsed': !expanded,
|
|
46
|
+
'fr-accordion-item--expanded': expanded,
|
|
47
|
+
'fr-accordion-item--highlighted': expanded && highlighted
|
|
48
|
+
}, className),
|
|
49
|
+
...props,
|
|
50
|
+
children: [
|
|
51
|
+
children,
|
|
52
|
+
/*#__PURE__*/ jsx("div", {
|
|
53
|
+
className: "fr-accordion-item-link",
|
|
54
|
+
children: linkText
|
|
55
|
+
})
|
|
56
|
+
]
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
export { AccordionItem };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
.fr-accordion-item-body {
|
|
2
|
+
height: 0;
|
|
3
|
+
transition: height .3s cubic-bezier(.4, 0, .2, 1);
|
|
4
|
+
overflow: hidden;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.fr-accordion-item-body > :first-child:not(.fr-accordion-item-body-spacer-bottom):not(.fr-accordion) {
|
|
8
|
+
margin-top: 0 !important;
|
|
9
|
+
padding-top: 0 !important;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.fr-accordion-item-body > :not(.fr-accordion) {
|
|
13
|
+
margin-right: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.fr-accordion-item-body-content {
|
|
17
|
+
margin-right: 64px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.fr-accordion-item-body-spacer-bottom {
|
|
21
|
+
width: 0;
|
|
22
|
+
height: 0;
|
|
23
|
+
margin-top: 24px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.fr-accordion-item-body .fr-accordion {
|
|
27
|
+
margin-top: 64px;
|
|
28
|
+
margin-bottom: 24px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.fr-accordion-item-body .fr-accordion-item-link {
|
|
32
|
+
display: block;
|
|
33
|
+
top: 8px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.fr-accordion-item-body .fr-accordion-item-header {
|
|
37
|
+
padding-top: 32px;
|
|
38
|
+
padding-right: 32px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.fr-accordion-item-body .fr-accordion-item:after {
|
|
42
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxNnYxNkgweiIvPjxwYXRoIGZpbGw9IiMwMDkxREMiIGQ9Ik04IDEwLjcwNyAzLjY0NiA2LjM1NGwuNzA4LS43MDhMOCA5LjI5M2wzLjY0Ni0zLjY0Ny43MDguNzA4TDggMTAuNzA3eiIvPjwvc3ZnPg==);
|
|
43
|
+
width: 16px;
|
|
44
|
+
height: 16px;
|
|
45
|
+
top: 12px;
|
|
46
|
+
right: 4px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.fr-accordion-item-body .fr-accordion-item--expanded:before {
|
|
50
|
+
background-color: #0000;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@media (width >= 600px) {
|
|
54
|
+
.fr-accordion-item-body > :not(.fng-accordion) {
|
|
55
|
+
margin-right: 64px;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.fr-accordion-item-body .fr-accordion-item-header {
|
|
59
|
+
padding-top: 24px;
|
|
60
|
+
padding-right: 168px;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.fr-accordion-item-body .fr-accordion-item-link {
|
|
64
|
+
font-size: var(--fwe-font-size-base);
|
|
65
|
+
white-space: nowrap;
|
|
66
|
+
text-overflow: ellipsis;
|
|
67
|
+
max-width: 128px;
|
|
68
|
+
top: 24px;
|
|
69
|
+
overflow: hidden;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.fr-accordion-item-body .fr-accordion-item:after {
|
|
73
|
+
top: 30px;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import "./AccordionItemBody.css";
|
|
3
|
+
import classnames from "classnames";
|
|
4
|
+
import { forwardRef, useContext, useRef } from "react";
|
|
5
|
+
import { Transition } from "react-transition-group";
|
|
6
|
+
import { useForkRef } from "../../../../utils/useForkRef.js";
|
|
7
|
+
import { AccordionItemContext } from "../AccordionItemContext.js";
|
|
8
|
+
const AccordionItemBody = /*#__PURE__*/ forwardRef(({ children, className, ...props }, ref)=>{
|
|
9
|
+
const { expanded, id } = useContext(AccordionItemContext);
|
|
10
|
+
const innerRef = useRef(null);
|
|
11
|
+
const element = innerRef.current;
|
|
12
|
+
const combinedRef = useForkRef(ref, innerRef);
|
|
13
|
+
const initialHeight = useRef(expanded ? 'auto' : 0);
|
|
14
|
+
const handleEntering = ()=>{
|
|
15
|
+
if (element) {
|
|
16
|
+
const itemHeight = element.scrollHeight;
|
|
17
|
+
element.style.height = `${itemHeight}px`;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const handleEntered = ()=>{
|
|
21
|
+
if (element) element.style.height = 'auto';
|
|
22
|
+
};
|
|
23
|
+
const handleExit = ()=>{
|
|
24
|
+
if (element) {
|
|
25
|
+
const itemHeight = element.scrollHeight;
|
|
26
|
+
element.style.height = `${itemHeight}px`;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const handleExiting = ()=>{
|
|
30
|
+
setTimeout(()=>{
|
|
31
|
+
if (element) element.style.height = '0px';
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
return /*#__PURE__*/ jsx(Transition, {
|
|
35
|
+
in: expanded,
|
|
36
|
+
nodeRef: innerRef,
|
|
37
|
+
timeout: 300,
|
|
38
|
+
onExit: handleExit,
|
|
39
|
+
onExiting: handleExiting,
|
|
40
|
+
onEntering: handleEntering,
|
|
41
|
+
onEntered: handleEntered,
|
|
42
|
+
children: /*#__PURE__*/ jsxs("section", {
|
|
43
|
+
ref: combinedRef,
|
|
44
|
+
id: `${id}-body`,
|
|
45
|
+
"aria-labelledby": `${id}-header`,
|
|
46
|
+
className: classnames('fr-accordion-item-body', className),
|
|
47
|
+
style: {
|
|
48
|
+
height: initialHeight.current,
|
|
49
|
+
minHeight: 0
|
|
50
|
+
},
|
|
51
|
+
...props,
|
|
52
|
+
children: [
|
|
53
|
+
children,
|
|
54
|
+
/*#__PURE__*/ jsx("div", {
|
|
55
|
+
className: "fr-accordion-item-body-spacer-bottom"
|
|
56
|
+
})
|
|
57
|
+
]
|
|
58
|
+
})
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
export { AccordionItemBody };
|
package/dist/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.d.ts
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import './AccordionItemHeader.scss';
|
|
2
|
+
export declare const AccordionItemHeader: (props: Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>) => React.ReactElement | null;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import "./AccordionItemHeader.css";
|
|
3
|
+
import classnames from "classnames";
|
|
4
|
+
import { forwardRef, useContext } from "react";
|
|
5
|
+
import { AccordionItemContext } from "../AccordionItemContext.js";
|
|
6
|
+
const AccordionItemHeader = /*#__PURE__*/ forwardRef(({ children, className, ...props }, ref)=>{
|
|
7
|
+
const { toggle, id, expanded } = useContext(AccordionItemContext);
|
|
8
|
+
return /*#__PURE__*/ jsx("button", {
|
|
9
|
+
ref: ref,
|
|
10
|
+
type: "button",
|
|
11
|
+
className: classnames('fr-accordion-item-header', className),
|
|
12
|
+
id: `${id}-header`,
|
|
13
|
+
"aria-controls": `${id}-body`,
|
|
14
|
+
"aria-expanded": expanded,
|
|
15
|
+
onClick: toggle,
|
|
16
|
+
...props,
|
|
17
|
+
children: children
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
export { AccordionItemHeader };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
.fr-bottom-sheet-drag-handle-container {
|
|
2
|
+
cursor: pointer;
|
|
3
|
+
background: none;
|
|
4
|
+
border: none;
|
|
5
|
+
width: 100%;
|
|
6
|
+
margin: 0;
|
|
7
|
+
padding: 0;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.fr-bottom-sheet-drag-handle-container:focus {
|
|
11
|
+
outline: none;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.fr-bottom-sheet-drag-handle-container:focus-visible {
|
|
15
|
+
outline: 2px solid var(--fwe-hero);
|
|
16
|
+
outline-offset: 2px;
|
|
17
|
+
}
|
|
18
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import './BottomSheet.scss';
|
|
2
|
+
interface BottomSheetProps {
|
|
3
|
+
readonly children: React.ReactNode;
|
|
4
|
+
readonly defaultExpanded?: boolean;
|
|
5
|
+
readonly open?: boolean;
|
|
6
|
+
readonly expandFrom?: 'center' | 'bottom';
|
|
7
|
+
readonly hasBackdrop?: boolean;
|
|
8
|
+
readonly hideCloseIcon?: boolean;
|
|
9
|
+
readonly onOpenChange?: (value: boolean) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function BottomSheet({ children, open, defaultExpanded, expandFrom, hasBackdrop, hideCloseIcon, onOpenChange, }: BottomSheetProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import "./BottomSheet.css";
|
|
3
|
+
import classnames from "classnames";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
function BottomSheet({ children, open, defaultExpanded, expandFrom = 'center', hasBackdrop = true, hideCloseIcon, onOpenChange }) {
|
|
6
|
+
const [expanded, setExpanded] = useState(defaultExpanded);
|
|
7
|
+
const [isClosing, setIsClosing] = useState(false);
|
|
8
|
+
const [startY, setStartY] = useState(0);
|
|
9
|
+
const [swiping, setSwiping] = useState(false);
|
|
10
|
+
function toggleExpand() {
|
|
11
|
+
const newExpanded = !expanded;
|
|
12
|
+
setExpanded(newExpanded);
|
|
13
|
+
}
|
|
14
|
+
function closeBottomSheet() {
|
|
15
|
+
setIsClosing(true);
|
|
16
|
+
setExpanded(defaultExpanded);
|
|
17
|
+
setTimeout(()=>{
|
|
18
|
+
setIsClosing(false);
|
|
19
|
+
onOpenChange?.(false);
|
|
20
|
+
}, 300);
|
|
21
|
+
}
|
|
22
|
+
const handleTouchStart = (event)=>{
|
|
23
|
+
setStartY(event.touches[0].clientY);
|
|
24
|
+
setSwiping(true);
|
|
25
|
+
};
|
|
26
|
+
const handleTouchMove = (event)=>{
|
|
27
|
+
if (!swiping) return;
|
|
28
|
+
const currentY = event.touches[0].clientY;
|
|
29
|
+
const deltaY = currentY - startY;
|
|
30
|
+
if (deltaY < -50 && !expanded) {
|
|
31
|
+
setExpanded(true);
|
|
32
|
+
setSwiping(false);
|
|
33
|
+
} else if (deltaY > 50 && expanded) {
|
|
34
|
+
setExpanded(false);
|
|
35
|
+
setSwiping(false);
|
|
36
|
+
} else if (deltaY > 100 && !expanded) {
|
|
37
|
+
closeBottomSheet();
|
|
38
|
+
setSwiping(false);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
|
42
|
+
children: [
|
|
43
|
+
/*#__PURE__*/ jsx("div", {
|
|
44
|
+
"aria-hidden": "true",
|
|
45
|
+
className: classnames('fwe-bottom-sheet-backdrop', {
|
|
46
|
+
'fwe-bottom-sheet-backdrop--visible': hasBackdrop && open && !isClosing
|
|
47
|
+
}),
|
|
48
|
+
tabIndex: -1,
|
|
49
|
+
onClick: closeBottomSheet,
|
|
50
|
+
onKeyDown: (e)=>{
|
|
51
|
+
if ('Enter' === e.key || ' ' === e.key) {
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
closeBottomSheet();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}),
|
|
57
|
+
/*#__PURE__*/ jsxs("div", {
|
|
58
|
+
className: classnames('fwe-bottom-sheet-container', {
|
|
59
|
+
'fwe-bottom-sheet-container--open': open,
|
|
60
|
+
'fwe-bottom-sheet-container--expanded': expanded,
|
|
61
|
+
'fwe-bottom-sheet-container--expand-from-center': 'center' === expandFrom,
|
|
62
|
+
'fwe-bottom-sheet-container--with-backdrop': hasBackdrop,
|
|
63
|
+
'fwe-bottom-sheet-container--closing': isClosing
|
|
64
|
+
}),
|
|
65
|
+
onTouchStart: handleTouchStart,
|
|
66
|
+
onTouchMove: handleTouchMove,
|
|
67
|
+
children: [
|
|
68
|
+
/*#__PURE__*/ jsxs("div", {
|
|
69
|
+
className: "fwe-bottom-sheet-header",
|
|
70
|
+
children: [
|
|
71
|
+
/*#__PURE__*/ jsx("button", {
|
|
72
|
+
type: "button",
|
|
73
|
+
className: "fr-bottom-sheet-drag-handle-container fwe-bottom-sheet-drag-handle-container",
|
|
74
|
+
"aria-label": expanded ? 'Collapse bottom sheet' : 'Expand bottom sheet',
|
|
75
|
+
"aria-expanded": expanded,
|
|
76
|
+
onClick: toggleExpand,
|
|
77
|
+
children: /*#__PURE__*/ jsx("div", {
|
|
78
|
+
className: "fwe-bottom-sheet-drag-handle"
|
|
79
|
+
})
|
|
80
|
+
}),
|
|
81
|
+
!hideCloseIcon && /*#__PURE__*/ jsx("button", {
|
|
82
|
+
type: "button",
|
|
83
|
+
className: "fwe-bottom-sheet-close-btn",
|
|
84
|
+
onClick: closeBottomSheet,
|
|
85
|
+
children: /*#__PURE__*/ jsx("span", {
|
|
86
|
+
className: "fwe-sr-only",
|
|
87
|
+
children: "Close"
|
|
88
|
+
})
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
}),
|
|
92
|
+
/*#__PURE__*/ jsx("div", {
|
|
93
|
+
className: "fwe-bottom-sheet-content",
|
|
94
|
+
children: children
|
|
95
|
+
})
|
|
96
|
+
]
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
export { BottomSheet };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ClassNamePropsWithChildren } from '../../utils/types';
|
|
3
|
+
export interface BreadcrumbProps extends ClassNamePropsWithChildren {
|
|
4
|
+
locations?: {
|
|
5
|
+
label: string;
|
|
6
|
+
url: string;
|
|
7
|
+
}[];
|
|
8
|
+
onClick?: (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Breadcrumb navigation can be used on pages with multiple navigation levels.
|
|
12
|
+
*/
|
|
13
|
+
export declare function Breadcrumb({ locations, onClick, children, className, }: BreadcrumbProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import classnames from "classnames";
|
|
3
|
+
import react from "react";
|
|
4
|
+
function Breadcrumb({ locations, onClick, children, className }) {
|
|
5
|
+
const childrenList = [];
|
|
6
|
+
react.Children.forEach(children, (element)=>{
|
|
7
|
+
if (/*#__PURE__*/ react.isValidElement(element)) childrenList.push({
|
|
8
|
+
...element,
|
|
9
|
+
props: {
|
|
10
|
+
...element.props,
|
|
11
|
+
className: 'fr-breadcrumb-location'
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
return /*#__PURE__*/ jsx("div", {
|
|
16
|
+
className: classnames('fwe-breadcrumb', className),
|
|
17
|
+
children: locations ? locations.map((location)=>/*#__PURE__*/ jsx(react.Fragment, {
|
|
18
|
+
children: /*#__PURE__*/ jsx("a", {
|
|
19
|
+
className: "fr-breadcrumb-location",
|
|
20
|
+
href: location.url,
|
|
21
|
+
onClick: (e)=>onClick ? onClick(e) : void 0,
|
|
22
|
+
children: location.label
|
|
23
|
+
})
|
|
24
|
+
}, location.url)) : childrenList.map((child)=>/*#__PURE__*/ jsxs(react.Fragment, {
|
|
25
|
+
children: [
|
|
26
|
+
child,
|
|
27
|
+
" "
|
|
28
|
+
]
|
|
29
|
+
}, child.props.children))
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export { Breadcrumb };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
export interface ButtonProps extends ComponentPropsWithoutRef<'button'> {
|
|
3
|
+
icon?: React.ReactNode;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
primary?: boolean;
|
|
6
|
+
tertiary?: boolean;
|
|
7
|
+
iconOnly?: boolean;
|
|
8
|
+
large?: boolean;
|
|
9
|
+
floating?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const Button: (props: ButtonProps & import("react").RefAttributes<HTMLButtonElement>) => React.ReactElement | null;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import classnames from "classnames";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
import { IconWrapper } from "../icon-wrapper/IconWrapper.js";
|
|
5
|
+
const Button = /*#__PURE__*/ forwardRef(({ icon, type = 'button', disabled = false, iconOnly = false, large = false, floating = false, onClick, primary = false, tertiary = false, className, children, ...props }, ref)=>{
|
|
6
|
+
const classes = classnames('fwe-btn', 'fr-button', {
|
|
7
|
+
'fwe-btn-icon': iconOnly
|
|
8
|
+
}, {
|
|
9
|
+
'fwe-disabled': disabled
|
|
10
|
+
}, {
|
|
11
|
+
'fwe-btn-hero': primary && !tertiary
|
|
12
|
+
}, {
|
|
13
|
+
'fwe-btn-link': tertiary && !primary
|
|
14
|
+
}, {
|
|
15
|
+
'fwe-btn-lg': large
|
|
16
|
+
}, {
|
|
17
|
+
'fwe-btn-floating': floating
|
|
18
|
+
}, className);
|
|
19
|
+
return /*#__PURE__*/ jsxs("button", {
|
|
20
|
+
type: type,
|
|
21
|
+
onClick: onClick,
|
|
22
|
+
className: classes,
|
|
23
|
+
disabled: disabled,
|
|
24
|
+
ref: ref,
|
|
25
|
+
...props,
|
|
26
|
+
children: [
|
|
27
|
+
/*#__PURE__*/ jsx(IconWrapper, {
|
|
28
|
+
icon: icon
|
|
29
|
+
}),
|
|
30
|
+
!iconOnly && /*#__PURE__*/ jsx("div", {
|
|
31
|
+
children: children
|
|
32
|
+
})
|
|
33
|
+
]
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
export { Button };
|