@luscii-healthtech/web-ui 0.0.0-alpha.2fcd0e9
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/README.md +179 -0
- package/dist/components/Accordion/Accordion.d.ts +10 -0
- package/dist/components/Accordion/AccordionItem.d.ts +9 -0
- package/dist/components/AccordionList/AccordionList.d.ts +42 -0
- package/dist/components/AccordionList/subcomponents/AccordionListActions.d.ts +18 -0
- package/dist/components/Badge/Badge.d.ts +7 -0
- package/dist/components/BaseList/BaseList.d.ts +7 -0
- package/dist/components/BaseList/BaseList.types.d.ts +55 -0
- package/dist/components/BaseList/BaseListEmptyState.d.ts +7 -0
- package/dist/components/BaseList/BaseListHeader.d.ts +4 -0
- package/dist/components/BaseList/BaseListIcon.d.ts +5 -0
- package/dist/components/BaseList/BaseListItem.d.ts +4 -0
- package/dist/components/BaseList/DraggableBaseList/DraggableBaseList.d.ts +4 -0
- package/dist/components/BaseList/DraggableBaseList/DraggableBaseListItem.d.ts +3 -0
- package/dist/components/BaseList/DraggableBaseList/index.d.ts +2 -0
- package/dist/components/BaseList/ListSkeleton/ListItemSkeleton.d.ts +2 -0
- package/dist/components/BaseList/ListSkeleton/ListSkeleton.d.ts +8 -0
- package/dist/components/BaseList/SortableBaseList/SortableBaseList.d.ts +4 -0
- package/dist/components/BaseList/SortableBaseList/SortableBaseListItem.d.ts +3 -0
- package/dist/components/BaseList/SortableBaseList/index.d.ts +2 -0
- package/dist/components/BaseList/index.d.ts +6 -0
- package/dist/components/BaseList/utils.d.ts +10 -0
- package/dist/components/Breadcrumbs/BreadcrumbItem.d.ts +4 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +3 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.types.d.ts +14 -0
- package/dist/components/Breadcrumbs/index.d.ts +2 -0
- package/dist/components/Button/Button.d.ts +9 -0
- package/dist/components/Button/Button.types.d.ts +32 -0
- package/dist/components/Button/ButtonIcon.d.ts +7 -0
- package/dist/components/ButtonV2/ButtonProps.type.d.ts +49 -0
- package/dist/components/ButtonV2/ButtonV2.d.ts +3 -0
- package/dist/components/ButtonV2/PrimaryButton.d.ts +3 -0
- package/dist/components/ButtonV2/SecondaryButton.d.ts +3 -0
- package/dist/components/ButtonV2/TertiaryButton.d.ts +3 -0
- package/dist/components/Card/Card.d.ts +12 -0
- package/dist/components/Carousel/Carousel.d.ts +8 -0
- package/dist/components/Carousel/GliderContainer.d.ts +7 -0
- package/dist/components/CenteredHero/CenteredHero.d.ts +14 -0
- package/dist/components/CheckBoxListModal/CheckboxListModal.d.ts +30 -0
- package/dist/components/Checkbox/Checkbox.d.ts +64 -0
- package/dist/components/CheckboxList/CheckboxGroup.d.ts +3 -0
- package/dist/components/CheckboxList/CheckboxList.d.ts +4 -0
- package/dist/components/CheckboxList/CheckboxList.types.d.ts +74 -0
- package/dist/components/CheckboxList/CheckboxListItem.d.ts +3 -0
- package/dist/components/ConfirmationDialog/ConfirmationDialog.d.ts +3 -0
- package/dist/components/ConfirmationDialog/ConfirmationDialogChoices.d.ts +7 -0
- package/dist/components/ConfirmationDialog/ConfirmationDialogMessage.d.ts +4 -0
- package/dist/components/ConfirmationDialog/ConfirmationDialogTitle.d.ts +3 -0
- package/dist/components/ConfirmationDialog/types/ConfirmationDialog.types.d.ts +41 -0
- package/dist/components/Container/FlexColumn.d.ts +7 -0
- package/dist/components/Container/FlexContainer.d.ts +9 -0
- package/dist/components/Container/FlexRow.d.ts +7 -0
- package/dist/components/Container/types/FlexContainerProps.type.d.ts +26 -0
- package/dist/components/Divider/Divider.d.ts +6 -0
- package/dist/components/DragHandle/DragHandle.d.ts +7 -0
- package/dist/components/DragHandle/DragHandle.types.d.ts +6 -0
- package/dist/components/DragHandle/index.d.ts +2 -0
- package/dist/components/Dropzone/Dropzone.d.ts +6 -0
- package/dist/components/Dropzone/Dropzone.types.d.ts +33 -0
- package/dist/components/Dropzone/index.d.ts +2 -0
- package/dist/components/EmptyListMessage/EmptyListMessage.d.ts +14 -0
- package/dist/components/FilterBar/ActiveFilters.d.ts +9 -0
- package/dist/components/FilterBar/FilterBar.d.ts +96 -0
- package/dist/components/FilterBar/FilterBar.utils.d.ts +32 -0
- package/dist/components/FilterBar/FilterBarProps.type.d.ts +86 -0
- package/dist/components/FilterBar/FiltersMenus.d.ts +8 -0
- package/dist/components/FilterBar/SortMenu.d.ts +9 -0
- package/dist/components/FilterBar/index.d.ts +2 -0
- package/dist/components/Form/Form.d.ts +30 -0
- package/dist/components/Form/FormFieldCheckbox.d.ts +9 -0
- package/dist/components/Form/FormFieldCheckboxList.d.ts +9 -0
- package/dist/components/Form/FormFieldErrorMessages.d.ts +8 -0
- package/dist/components/Form/FormFieldLabeler.d.ts +8 -0
- package/dist/components/Form/FormImagePicker.d.ts +9 -0
- package/dist/components/Form/FormInput.d.ts +14 -0
- package/dist/components/Form/FormRadioGroup.d.ts +13 -0
- package/dist/components/Form/FormSelect.d.ts +10 -0
- package/dist/components/Form/FormTextarea.d.ts +14 -0
- package/dist/components/Form/form.transformer.d.ts +3 -0
- package/dist/components/Form/form.types.d.ts +92 -0
- package/dist/components/Icon/Icon.d.ts +17 -0
- package/dist/components/Icon/index.d.ts +1 -0
- package/dist/components/Icons/AddIcon.d.ts +4 -0
- package/dist/components/Icons/AlertsIcon.d.ts +4 -0
- package/dist/components/Icons/BellIcon.d.ts +4 -0
- package/dist/components/Icons/BluetoothIcon.d.ts +4 -0
- package/dist/components/Icons/ChartIcon.d.ts +4 -0
- package/dist/components/Icons/ChartLineColoredIcon.d.ts +4 -0
- package/dist/components/Icons/ChatBoxIcon.d.ts +4 -0
- package/dist/components/Icons/CheckIcon.d.ts +4 -0
- package/dist/components/Icons/ChevronDoubleIcon.d.ts +4 -0
- package/dist/components/Icons/ChevronDownIcon.d.ts +4 -0
- package/dist/components/Icons/ChevronRightIcon.d.ts +4 -0
- package/dist/components/Icons/CrossIcon.d.ts +4 -0
- package/dist/components/Icons/DeleteIcon.d.ts +4 -0
- package/dist/components/Icons/DownArrowIcon.d.ts +4 -0
- package/dist/components/Icons/DragIcon.d.ts +4 -0
- package/dist/components/Icons/EditIcon.d.ts +4 -0
- package/dist/components/Icons/EmptyIcon.d.ts +4 -0
- package/dist/components/Icons/EmptyStateDashboardIcon.d.ts +4 -0
- package/dist/components/Icons/ExclamationMarkIcon.d.ts +4 -0
- package/dist/components/Icons/EyeIcon.d.ts +4 -0
- package/dist/components/Icons/EyeIconSlashed.d.ts +4 -0
- package/dist/components/Icons/GearColoredIcon.d.ts +4 -0
- package/dist/components/Icons/GearIcon.d.ts +4 -0
- package/dist/components/Icons/GroupColoredIcon.d.ts +4 -0
- package/dist/components/Icons/GroupIcon.d.ts +4 -0
- package/dist/components/Icons/HamburgerIcon.d.ts +4 -0
- package/dist/components/Icons/HeartIcon.d.ts +4 -0
- package/dist/components/Icons/ImageIcon.d.ts +4 -0
- package/dist/components/Icons/InfoIcon.d.ts +4 -0
- package/dist/components/Icons/LeftArrowIcon.d.ts +4 -0
- package/dist/components/Icons/LightBulbIcon.d.ts +4 -0
- package/dist/components/Icons/LinkIcon.d.ts +4 -0
- package/dist/components/Icons/LockIcon.d.ts +4 -0
- package/dist/components/Icons/MessagesIcon.d.ts +4 -0
- package/dist/components/Icons/MouseIcon.d.ts +4 -0
- package/dist/components/Icons/NotesIcon.d.ts +4 -0
- package/dist/components/Icons/PageViewIcon.d.ts +4 -0
- package/dist/components/Icons/PinIcon.d.ts +4 -0
- package/dist/components/Icons/PrintIcon.d.ts +4 -0
- package/dist/components/Icons/RightArrowIcon.d.ts +4 -0
- package/dist/components/Icons/SearchCancelIcon.d.ts +4 -0
- package/dist/components/Icons/SearchIcon.d.ts +4 -0
- package/dist/components/Icons/SmallCircleIcon.d.ts +4 -0
- package/dist/components/Icons/SmallDiamondIcon.d.ts +4 -0
- package/dist/components/Icons/SmallSquareIcon.d.ts +4 -0
- package/dist/components/Icons/SpaceRocketIcon.d.ts +4 -0
- package/dist/components/Icons/StarIcon.d.ts +4 -0
- package/dist/components/Icons/StatusColoredIcon.d.ts +4 -0
- package/dist/components/Icons/WarningIcon.d.ts +4 -0
- package/dist/components/Icons/iconWrapper/iconWrapper.d.ts +4 -0
- package/dist/components/Icons/iconWrapper/index.d.ts +1 -0
- package/dist/components/Icons/index.d.ts +49 -0
- package/dist/components/Icons/templates/component.d.ts +3 -0
- package/dist/components/Icons/templates/index.d.ts +2 -0
- package/dist/components/Icons/types/IconProps.type.d.ts +8 -0
- package/dist/components/Image/Image.d.ts +10 -0
- package/dist/components/InfoField/InfoField.d.ts +28 -0
- package/dist/components/Input/Input.d.ts +57 -0
- package/dist/components/Input/SearchInput.d.ts +24 -0
- package/dist/components/Link/Link.d.ts +19 -0
- package/dist/components/List/List.d.ts +6 -0
- package/dist/components/List/List.types.d.ts +19 -0
- package/dist/components/List/ListItem.d.ts +4 -0
- package/dist/components/List/index.d.ts +5 -0
- package/dist/components/LoadingIndicator/LoadingIndicator.d.ts +12 -0
- package/dist/components/MediaPicker/ImageCategory.d.ts +14 -0
- package/dist/components/MediaPicker/MediaPicker.d.ts +95 -0
- package/dist/components/Modal/FullPageModal.d.ts +39 -0
- package/dist/components/Modal/FullPageModalHeader.d.ts +13 -0
- package/dist/components/Modal/Modal.d.ts +6 -0
- package/dist/components/Modal/ModalBase.d.ts +16 -0
- package/dist/components/Modal/ModalFooter.d.ts +12 -0
- package/dist/components/Modal/ModalHeader.d.ts +6 -0
- package/dist/components/Modal/subcomponents/FullPageModalActions.d.ts +18 -0
- package/dist/components/NavMenu/NavLayout.d.ts +20 -0
- package/dist/components/NavMenu/NavMenu.d.ts +16 -0
- package/dist/components/NavMenu/NavMenuContent.d.ts +3 -0
- package/dist/components/NavMenu/NavMenuFooter.d.ts +3 -0
- package/dist/components/NavMenu/NavMenuHeader.d.ts +3 -0
- package/dist/components/NavMenu/NavMenuItem.d.ts +3 -0
- package/dist/components/NavMenu/types/NavMenuFooterProps.type.d.ts +5 -0
- package/dist/components/NavMenu/types/NavMenuHeaderProps.type.d.ts +5 -0
- package/dist/components/NavMenu/types/NavMenuItemProps.type.d.ts +11 -0
- package/dist/components/NotificationBanner/NotificationBanner.d.ts +41 -0
- package/dist/components/Page/CRUDPage.d.ts +4 -0
- package/dist/components/Page/CRUDPage.types.d.ts +32 -0
- package/dist/components/Page/index.d.ts +3 -0
- package/dist/components/PageHeader/PageHeader.d.ts +4 -0
- package/dist/components/PageHeader/PageHeader.types.d.ts +28 -0
- package/dist/components/PageHeader/index.d.ts +2 -0
- package/dist/components/PaginationMenu/PaginationMenu.d.ts +3 -0
- package/dist/components/PaginationMenu/PaginationMenu.types.d.ts +37 -0
- package/dist/components/PaginationMenu/PaginationMenu.utils.d.ts +15 -0
- package/dist/components/PaginationMenu/PaginationMenuLarge.d.ts +3 -0
- package/dist/components/PaginationMenu/PaginationMenuSmall.d.ts +3 -0
- package/dist/components/PreviewPhone/PreviewPhone.d.ts +7 -0
- package/dist/components/Radio/RadioV2.d.ts +17 -0
- package/dist/components/RadioGroup/RadioGroupV2.d.ts +10 -0
- package/dist/components/Section/Section.d.ts +25 -0
- package/dist/components/Section/SectionItem.d.ts +9 -0
- package/dist/components/Section/SectionItemWithContent.d.ts +9 -0
- package/dist/components/Section/subcomponents/SectionActions.d.ts +21 -0
- package/dist/components/Select/Select.d.ts +46 -0
- package/dist/components/Select/SelectDropdownIndicator.d.ts +3 -0
- package/dist/components/Select/SelectLoadingIndicator.d.ts +3 -0
- package/dist/components/SettingsMenuButton/SettingsMenuButton.d.ts +19 -0
- package/dist/components/Spinner/Spinner.d.ts +6 -0
- package/dist/components/Steps/Step.d.ts +10 -0
- package/dist/components/Steps/Steps.d.ts +10 -0
- package/dist/components/TabLinks/TabLinks.d.ts +14 -0
- package/dist/components/Tabbar/Tabbar.d.ts +18 -0
- package/dist/components/Tabbar/TabbarItem.d.ts +16 -0
- package/dist/components/Table/Table.d.ts +16 -0
- package/dist/components/Table/Table.types.d.ts +43 -0
- package/dist/components/Table/Table.utils.d.ts +3 -0
- package/dist/components/Table/TableBody.d.ts +13 -0
- package/dist/components/Table/TableBodyRow.d.ts +10 -0
- package/dist/components/Table/TableBodyRowDataCell.d.ts +8 -0
- package/dist/components/Table/TableFooter.d.ts +8 -0
- package/dist/components/Table/TableHeader.d.ts +7 -0
- package/dist/components/Tag/Tag.d.ts +17 -0
- package/dist/components/Tag/Tag.utils.d.ts +4 -0
- package/dist/components/Tag/TagGroup.d.ts +10 -0
- package/dist/components/Text/Text.d.ts +115 -0
- package/dist/components/TextEditor/TextEditor.d.ts +17 -0
- package/dist/components/TextLink/TextLink.d.ts +14 -0
- package/dist/components/Textarea/Textarea.d.ts +29 -0
- package/dist/components/Timeline/Timeline.d.ts +14 -0
- package/dist/components/Timeline/TimelineHeader.d.ts +10 -0
- package/dist/components/Timeline/TimelineStep.d.ts +10 -0
- package/dist/components/Title/Title.d.ts +17 -0
- package/dist/components/Toaster/Toaster.d.ts +17 -0
- package/dist/components/Toaster/toast-elements-getter.d.ts +22 -0
- package/dist/components/Toaster/toast-progress-animator.d.ts +12 -0
- package/dist/components/Toaster/toast.d.ts +12 -0
- package/dist/components/ViewItem/ViewItem.d.ts +16 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.development.js +5682 -0
- package/dist/index.development.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/types/general.types.d.ts +8 -0
- package/dist/utils/string.utils.d.ts +7 -0
- package/dist/web-ui-tailwind.css +2890 -0
- package/dist/web-ui.esm.js +2 -0
- package/dist/web-ui.esm.js.map +1 -0
- package/package.json +159 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export { default as AddIcon } from "./AddIcon";
|
|
2
|
+
export { default as AlertsIcon } from "./AlertsIcon";
|
|
3
|
+
export { default as BellIcon } from "./BellIcon";
|
|
4
|
+
export { default as BluetoothIcon } from "./BluetoothIcon";
|
|
5
|
+
export { default as ChartIcon } from "./ChartIcon";
|
|
6
|
+
export { default as ChartLineColoredIcon } from "./ChartLineColoredIcon";
|
|
7
|
+
export { default as ChatBoxIcon } from "./ChatBoxIcon";
|
|
8
|
+
export { default as CheckIcon } from "./CheckIcon";
|
|
9
|
+
export { default as ChevronDoubleIcon } from "./ChevronDoubleIcon";
|
|
10
|
+
export { default as ChevronDownIcon } from "./ChevronDownIcon";
|
|
11
|
+
export { default as ChevronRightIcon } from "./ChevronRightIcon";
|
|
12
|
+
export { default as CrossIcon } from "./CrossIcon";
|
|
13
|
+
export { default as DeleteIcon } from "./DeleteIcon";
|
|
14
|
+
export { default as DownArrowIcon } from "./DownArrowIcon";
|
|
15
|
+
export { default as DragIcon } from "./DragIcon";
|
|
16
|
+
export { default as EditIcon } from "./EditIcon";
|
|
17
|
+
export { default as EmptyIcon } from "./EmptyIcon";
|
|
18
|
+
export { default as EmptyStateDashboardIcon } from "./EmptyStateDashboardIcon";
|
|
19
|
+
export { default as ExclamationMarkIcon } from "./ExclamationMarkIcon";
|
|
20
|
+
export { default as EyeIconSlashed } from "./EyeIconSlashed";
|
|
21
|
+
export { default as EyeIcon } from "./EyeIcon";
|
|
22
|
+
export { default as GearColoredIcon } from "./GearColoredIcon";
|
|
23
|
+
export { default as GearIcon } from "./GearIcon";
|
|
24
|
+
export { default as GroupColoredIcon } from "./GroupColoredIcon";
|
|
25
|
+
export { default as GroupIcon } from "./GroupIcon";
|
|
26
|
+
export { default as HamburgerIcon } from "./HamburgerIcon";
|
|
27
|
+
export { default as HeartIcon } from "./HeartIcon";
|
|
28
|
+
export { default as ImageIcon } from "./ImageIcon";
|
|
29
|
+
export { default as InfoIcon } from "./InfoIcon";
|
|
30
|
+
export { default as LeftArrowIcon } from "./LeftArrowIcon";
|
|
31
|
+
export { default as LightBulbIcon } from "./LightBulbIcon";
|
|
32
|
+
export { default as LinkIcon } from "./LinkIcon";
|
|
33
|
+
export { default as LockIcon } from "./LockIcon";
|
|
34
|
+
export { default as MessagesIcon } from "./MessagesIcon";
|
|
35
|
+
export { default as MouseIcon } from "./MouseIcon";
|
|
36
|
+
export { default as NotesIcon } from "./NotesIcon";
|
|
37
|
+
export { default as PageViewIcon } from "./PageViewIcon";
|
|
38
|
+
export { default as PinIcon } from "./PinIcon";
|
|
39
|
+
export { default as PrintIcon } from "./PrintIcon";
|
|
40
|
+
export { default as RightArrowIcon } from "./RightArrowIcon";
|
|
41
|
+
export { default as SearchCancelIcon } from "./SearchCancelIcon";
|
|
42
|
+
export { default as SearchIcon } from "./SearchIcon";
|
|
43
|
+
export { default as SmallCircleIcon } from "./SmallCircleIcon";
|
|
44
|
+
export { default as SmallDiamondIcon } from "./SmallDiamondIcon";
|
|
45
|
+
export { default as SmallSquareIcon } from "./SmallSquareIcon";
|
|
46
|
+
export { default as SpaceRocketIcon } from "./SpaceRocketIcon";
|
|
47
|
+
export { default as StarIcon } from "./StarIcon";
|
|
48
|
+
export { default as StatusColoredIcon } from "./StatusColoredIcon";
|
|
49
|
+
export { default as WarningIcon } from "./WarningIcon";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import * as Icons from "../index";
|
|
3
|
+
export interface IconProps {
|
|
4
|
+
className?: string;
|
|
5
|
+
onClick?: (event: React.MouseEvent<SVGSVGElement> | undefined) => void;
|
|
6
|
+
"data-test-id"?: string;
|
|
7
|
+
}
|
|
8
|
+
export type IconKey = keyof typeof Icons;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React, { MouseEventHandler } from "react";
|
|
2
|
+
interface ImageProps {
|
|
3
|
+
src: string;
|
|
4
|
+
className: string;
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
onClick?: MouseEventHandler<HTMLSpanElement>;
|
|
7
|
+
showIconOnFailure?: boolean;
|
|
8
|
+
}
|
|
9
|
+
declare const Image: React.VFC<ImageProps>;
|
|
10
|
+
export default Image;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface InfoFieldProps {
|
|
3
|
+
label: string;
|
|
4
|
+
value: string;
|
|
5
|
+
/**
|
|
6
|
+
* Gives the component interactive abilities. The `value` prop
|
|
7
|
+
* is used in conjunction with this.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* // The `value` prop will be used as the `href` attribute of the link. This will open a new tab.
|
|
12
|
+
* <InfoField linkType="link" value="https://www.nos.nl" />
|
|
13
|
+
*
|
|
14
|
+
* // The `value` prop will be copied to the clipboard when the user clicks the component.
|
|
15
|
+
* <InfoField linkType="clipboard" value="14/09/1988" />
|
|
16
|
+
*
|
|
17
|
+
* // A phone call will be triggered based on the phone number in the `value` prop.
|
|
18
|
+
* <InfoField linkType="tel" value="+31612345678" />
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
linkType: "none" | "link" | "clipboard" | "tel";
|
|
22
|
+
supportsMultiline?: boolean;
|
|
23
|
+
onCopyToClipboard?: (value?: string) => void;
|
|
24
|
+
icon?: JSX.Element;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare const InfoField: (props: InfoFieldProps) => JSX.Element;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AllowedTextInputTypes } from "../Form/form.types";
|
|
3
|
+
import type { IconKey, IconProps } from "../Icons/types/IconProps.type";
|
|
4
|
+
import { FormFieldWidth } from "../Form/form.types";
|
|
5
|
+
import "./Input.css";
|
|
6
|
+
export declare const INPUT_TYPES: Record<string, AllowedTextInputTypes>;
|
|
7
|
+
/**
|
|
8
|
+
* It's very complicated to tap into the onChange events of inputs,
|
|
9
|
+
* so I omit the type it requires and add a easier one to deal with.
|
|
10
|
+
*/
|
|
11
|
+
type CustomHTMLInputProps = Omit<React.HTMLProps<HTMLInputElement>, "onChange" | "ref"> & {
|
|
12
|
+
isError?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type FakeEventTarget = {
|
|
15
|
+
target: {
|
|
16
|
+
value: string;
|
|
17
|
+
name: string;
|
|
18
|
+
};
|
|
19
|
+
currentTarget: {
|
|
20
|
+
value: string;
|
|
21
|
+
name: string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export interface InputProps extends CustomHTMLInputProps {
|
|
25
|
+
type?: AllowedTextInputTypes;
|
|
26
|
+
clearable?: boolean;
|
|
27
|
+
isDisabled?: boolean;
|
|
28
|
+
withPrefix?: string;
|
|
29
|
+
withSuffix?: string;
|
|
30
|
+
icon?: React.FC<IconProps> | IconKey;
|
|
31
|
+
width?: FormFieldWidth;
|
|
32
|
+
/**
|
|
33
|
+
* Check the `asFormField` prop of this component to understand why this signature.
|
|
34
|
+
*/
|
|
35
|
+
onChange?: (event: FakeEventTarget | string) => void;
|
|
36
|
+
/**
|
|
37
|
+
* ### TO BE USED WHEN INSIDE REACT-HOOK-FORM
|
|
38
|
+
*
|
|
39
|
+
* react-hook-form uses the onChange event differently.
|
|
40
|
+
* Instead of passing an `event` object, it uses the value itself from the callback.
|
|
41
|
+
*
|
|
42
|
+
* So we need to use this flag to determine how to call the onChange callback.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
*
|
|
46
|
+
* // In react-hook-forms:
|
|
47
|
+
*
|
|
48
|
+
* onChange({target: { name: 'myInput' }, value: 'text'}) // -> this whole object will be set as the value
|
|
49
|
+
*
|
|
50
|
+
* // so instead do:
|
|
51
|
+
*
|
|
52
|
+
* onChange('text') // -> 🤝
|
|
53
|
+
*/
|
|
54
|
+
asFormField?: boolean;
|
|
55
|
+
}
|
|
56
|
+
export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
57
|
+
export default Input;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Input from "./Input";
|
|
3
|
+
type InputProps = React.ComponentProps<typeof Input>;
|
|
4
|
+
export type SearchInputProps = Omit<InputProps, "icon" | "type" | "width" | "clearable" | "withSuffix" | "withPrefix" | "asFormField" | "isError"> & {
|
|
5
|
+
/**
|
|
6
|
+
* WARNING: Please note that this value is currently not passed on to the
|
|
7
|
+
* component. It's not deprecated, it will most likely be implemented correctly
|
|
8
|
+
* at a later stage.
|
|
9
|
+
*/
|
|
10
|
+
width?: InputProps["width"];
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated
|
|
13
|
+
* A search input should never be used in a form with multiple fields.
|
|
14
|
+
*/
|
|
15
|
+
asFormField?: InputProps["asFormField"];
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated
|
|
18
|
+
* A search input should never be in error state, because the
|
|
19
|
+
* user cannot do anything wrong when typing in this field.
|
|
20
|
+
*/
|
|
21
|
+
isError?: InputProps["isError"];
|
|
22
|
+
};
|
|
23
|
+
export declare const SearchInput: React.ForwardRefExoticComponent<Omit<SearchInputProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Source for the typing of the `as` prop: https://stackoverflow.com/a/66568474
|
|
4
|
+
*/
|
|
5
|
+
type Props<E extends React.ElementType> = React.PropsWithChildren<{
|
|
6
|
+
/**
|
|
7
|
+
* Provide a custom component tag name to render instead of the default `a` tag.
|
|
8
|
+
*
|
|
9
|
+
* @default "a"
|
|
10
|
+
* @example "button"
|
|
11
|
+
*/
|
|
12
|
+
as?: E;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* A bare-bones wrapper around an <a> tag, containing only our preferred styling. This is component
|
|
16
|
+
* can be used for any link and not just text links.
|
|
17
|
+
*/
|
|
18
|
+
export declare function Link<T extends React.ElementType = "a">(props: Props<T> & Omit<React.ComponentPropsWithoutRef<T>, keyof Props<T>>): React.JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { BaseListProps, BaseListItemProps, OnAssetLoadErrorPayload, DraggableBaseListProps, SortableBaseListProps } from "../BaseList/BaseList.types";
|
|
3
|
+
export type ListItemProps = Omit<BaseListItemProps, "onClick"> & {
|
|
4
|
+
handleItemClick?: (e: React.MouseEvent<HTMLLIElement>) => void;
|
|
5
|
+
};
|
|
6
|
+
export type DefaultListProps = Omit<BaseListProps<ListItemProps>, "renderItem" | "itemComponent"> & {
|
|
7
|
+
onDragEnd?: (itemId: string | number, newIndex: number) => void;
|
|
8
|
+
onAssetLoadError?: (payload: OnAssetLoadErrorPayload) => void;
|
|
9
|
+
};
|
|
10
|
+
export type DraggableListProps = DraggableBaseListProps;
|
|
11
|
+
export type SortableListProps = SortableBaseListProps;
|
|
12
|
+
export type SortableListItemProps = SortableListProps["items"][number];
|
|
13
|
+
export type ListProps = ({
|
|
14
|
+
draggableListType: "default";
|
|
15
|
+
} & DefaultListProps) | ({
|
|
16
|
+
draggableListType: "draggable";
|
|
17
|
+
} & DraggableListProps) | ({
|
|
18
|
+
draggableListType: "sortable";
|
|
19
|
+
} & SortableListProps) | DefaultListProps;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as List } from "./List";
|
|
2
|
+
export { ListItem } from "./ListItem";
|
|
3
|
+
export type { ListProps, ListItemProps, DraggableListProps, SortableListProps, SortableListItemProps, } from "./List.types";
|
|
4
|
+
export type { OnAssetLoadErrorPayload } from "../BaseList";
|
|
5
|
+
export { getDndListItemProps } from "../BaseList";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { RestPropped } from "../../types/general.types";
|
|
3
|
+
import "./LoadingIndicator.scss";
|
|
4
|
+
export interface LoadingIndicatorProps extends RestPropped {
|
|
5
|
+
asModal?: boolean;
|
|
6
|
+
asSpinner?: boolean;
|
|
7
|
+
className?: string;
|
|
8
|
+
spinnerColor?: "blue" | "gray";
|
|
9
|
+
dataTestId?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function LoadingIndicator({ asModal, asSpinner, className, spinnerColor, dataTestId, ...restProps }: LoadingIndicatorProps): JSX.Element;
|
|
12
|
+
export default LoadingIndicator;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React, { MouseEventHandler } from "react";
|
|
2
|
+
export interface CategoryProps {
|
|
3
|
+
folder: string;
|
|
4
|
+
key: string;
|
|
5
|
+
}
|
|
6
|
+
interface ImageCategoryProps {
|
|
7
|
+
category: CategoryProps;
|
|
8
|
+
images: string[];
|
|
9
|
+
highlightedImage: string | null;
|
|
10
|
+
handleImageClick: MouseEventHandler<HTMLSpanElement>;
|
|
11
|
+
isTypeCompact: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare const ImageCategory: (props: ImageCategoryProps) => React.JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { CategoryProps } from "./ImageCategory";
|
|
3
|
+
export interface TargetProps {
|
|
4
|
+
target: {
|
|
5
|
+
name: string | null | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* It is called imageData, but it can any file that was selected. The name is kept for backwards compatibility for now.
|
|
8
|
+
*/
|
|
9
|
+
value: string | null | undefined | {
|
|
10
|
+
imageData: FormData;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface ImagePickerProps {
|
|
15
|
+
name: string;
|
|
16
|
+
images: string[];
|
|
17
|
+
categories: CategoryProps[];
|
|
18
|
+
preselectedImage?: string;
|
|
19
|
+
preselectedMediaType?: "image" | "video";
|
|
20
|
+
/**
|
|
21
|
+
* Array of [valid MIME types](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types).
|
|
22
|
+
*
|
|
23
|
+
* If the media the user tries to upload doesn't match one of the
|
|
24
|
+
* MIME types in this array, an error message will be displayed in
|
|
25
|
+
* the UI.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```tsx
|
|
29
|
+
* <MediaPicker acceptedMimeTypes={[ "text/*", "image/jpeg", "video/mp4"]} />
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
acceptedMimeTypes?: string[];
|
|
33
|
+
/**
|
|
34
|
+
* Maximum file size allowed to be uploaded in MB. If undefined, a default limit of 100mb is applied.
|
|
35
|
+
*/
|
|
36
|
+
maxFileSize?: number;
|
|
37
|
+
clearImageIndex?: number;
|
|
38
|
+
type?: "normal" | "compact";
|
|
39
|
+
isDisabled?: boolean;
|
|
40
|
+
handleChange: (target: TargetProps) => void;
|
|
41
|
+
isUploadButtonVisible?: boolean;
|
|
42
|
+
isClearButtonVisible?: boolean;
|
|
43
|
+
isUploading?: boolean;
|
|
44
|
+
isErrorUploading?: boolean;
|
|
45
|
+
localisation: Partial<Record<"openModalButton" | "selectButton" | "error" | "uploadImage" | "clearSelection" | "cancel" | "search" | "unsupportedMediaType" | "modalTitle", string>>;
|
|
46
|
+
}
|
|
47
|
+
export declare const ImagePickerInner: React.FC<ImagePickerProps & {
|
|
48
|
+
innerRef?: React.Ref<HTMLButtonElement>;
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* @deprecated Use MediaPicker instead
|
|
52
|
+
*/
|
|
53
|
+
export declare const ImagePicker: React.ForwardRefExoticComponent<ImagePickerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
54
|
+
export interface MediaPickerProps {
|
|
55
|
+
name: string;
|
|
56
|
+
media: string[];
|
|
57
|
+
categories: CategoryProps[];
|
|
58
|
+
/**
|
|
59
|
+
* If you add preselectedMedia you must also specify preselectedMediaType, especially if it is not an image.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```tsx
|
|
63
|
+
* <MediaPicker preselectedMedia="http://www.domain.com/someVideo.mp4" preselectedMediaType="video"/>
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
preselectedMedia?: string;
|
|
67
|
+
preselectedMediaType?: "image" | "video";
|
|
68
|
+
clearIndex?: number;
|
|
69
|
+
type?: "normal" | "compact";
|
|
70
|
+
/**
|
|
71
|
+
* Array of [valid MIME types](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types).
|
|
72
|
+
*
|
|
73
|
+
* If the media the user tries to upload doesn't match one of the
|
|
74
|
+
* MIME types in this array, an error message will be displayed in
|
|
75
|
+
* the UI.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```tsx
|
|
79
|
+
* <MediaPicker acceptedMimeTypes={[ "text/*", "image/jpeg", "video/mp4"]} />
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
acceptedMimeTypes?: string[];
|
|
83
|
+
/**
|
|
84
|
+
* Maximum file size allowed to be uploaded in MB. If undefined, a default limit of 100mb is applied.
|
|
85
|
+
*/
|
|
86
|
+
maxFileSize?: number;
|
|
87
|
+
isDisabled?: boolean;
|
|
88
|
+
onChange: (target: TargetProps) => void;
|
|
89
|
+
isUploadButtonVisible?: boolean;
|
|
90
|
+
isClearButtonVisible?: boolean;
|
|
91
|
+
isUploading?: boolean;
|
|
92
|
+
isErrorUploading?: boolean;
|
|
93
|
+
localisation: Partial<Record<"openModalButton" | "selectButton" | "error" | "upload" | "clearSelection" | "cancel" | "search" | "unsupportedMediaType" | "modalTitle", string>>;
|
|
94
|
+
}
|
|
95
|
+
export declare const MediaPicker: (props: MediaPickerProps) => React.JSX.Element;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { PrimaryButtonProps } from "../ButtonV2/ButtonProps.type";
|
|
3
|
+
import { FullPageModalActions } from "./subcomponents/FullPageModalActions";
|
|
4
|
+
export type FullPageModalProps = {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
isOpen?: boolean;
|
|
7
|
+
title: string;
|
|
8
|
+
dataTestId?: string;
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated
|
|
11
|
+
* Use the `actions` prop to render any button(s)
|
|
12
|
+
* or other component(s) automatically in the correct area.
|
|
13
|
+
*
|
|
14
|
+
* This prop will only render a button when the actions prop is omitted.
|
|
15
|
+
* The actions prop takes precedence over this prop if they're both passed.
|
|
16
|
+
*/
|
|
17
|
+
primaryButtonProps?: PrimaryButtonProps;
|
|
18
|
+
/**
|
|
19
|
+
* Render buttons or other action components in the area meant for actions.
|
|
20
|
+
* To correctly space out the actions wrap them in a FullPageModal.Actions component.
|
|
21
|
+
* @usage
|
|
22
|
+
* ```tsx
|
|
23
|
+
* <FullPageModal
|
|
24
|
+
* actions={
|
|
25
|
+
* <FullPageModal.Actions>
|
|
26
|
+
* <PrimaryButton />
|
|
27
|
+
* <SecondaryButton />
|
|
28
|
+
* </FullPageModal.Actions>
|
|
29
|
+
* }
|
|
30
|
+
* />
|
|
31
|
+
*/
|
|
32
|
+
actions?: React.ReactNode;
|
|
33
|
+
onCloseClick: (event: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;
|
|
34
|
+
};
|
|
35
|
+
interface StaticComponents {
|
|
36
|
+
Actions: typeof FullPageModalActions;
|
|
37
|
+
}
|
|
38
|
+
export declare const FullPageModal: React.FC<FullPageModalProps> & StaticComponents;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { PrimaryButtonProps } from "../ButtonV2/ButtonProps.type";
|
|
3
|
+
export type FullPageModalHeaderProps = {
|
|
4
|
+
title: string;
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated
|
|
7
|
+
* Use the `actions` prop to render any button(s)
|
|
8
|
+
* or other component(s) automatically in the correct area.
|
|
9
|
+
*/
|
|
10
|
+
primaryButtonProps?: PrimaryButtonProps;
|
|
11
|
+
actions?: React.ReactNode;
|
|
12
|
+
};
|
|
13
|
+
export declare const FullPageModalHeader: React.FC<FullPageModalHeaderProps>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ModalHeaderProps } from "./ModalHeader";
|
|
3
|
+
import { ModalFooterProps } from "./ModalFooter";
|
|
4
|
+
export type ModalSize = "small" | "medium" | "wide";
|
|
5
|
+
export type ModalBaseProps = Omit<ModalHeaderProps, "title"> & {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
size?: ModalSize;
|
|
8
|
+
withExtraMarginTop?: boolean;
|
|
9
|
+
withContentPaddingY?: boolean;
|
|
10
|
+
isOpen?: boolean;
|
|
11
|
+
title?: string;
|
|
12
|
+
dataTestId?: string;
|
|
13
|
+
scrollableContent?: boolean;
|
|
14
|
+
onCloseClick: (event: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;
|
|
15
|
+
} & ModalFooterProps;
|
|
16
|
+
export declare const ModalBase: React.FC<ModalBaseProps>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ButtonWithPendingStateProps, NonPrimaryButtonProps, PrimaryButtonProps } from "../ButtonV2/ButtonProps.type";
|
|
3
|
+
export interface ModalFooterTrailingComponents {
|
|
4
|
+
primaryButtonProps: PrimaryButtonProps;
|
|
5
|
+
secondaryButtonProps?: NonPrimaryButtonProps;
|
|
6
|
+
}
|
|
7
|
+
export type ModalFooterLeadingComponent = string | ButtonWithPendingStateProps;
|
|
8
|
+
export type ModalFooterProps = {
|
|
9
|
+
footerLeadingComponent?: ModalFooterLeadingComponent;
|
|
10
|
+
footerTrailingComponents: ModalFooterTrailingComponents;
|
|
11
|
+
};
|
|
12
|
+
export declare const ModalFooter: React.FC<ModalFooterProps>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Use in the actions of a FullPageModal. Spaces out the action
|
|
4
|
+
* components correctly in relation to the styling of the FullPageModal component.
|
|
5
|
+
*
|
|
6
|
+
* @usage
|
|
7
|
+
* ```tsx
|
|
8
|
+
* <FullPageModal
|
|
9
|
+
* actions={
|
|
10
|
+
* <FullPageModal.Actions>
|
|
11
|
+
* <PrimaryButton />
|
|
12
|
+
* <SecondaryButton />
|
|
13
|
+
* </FullPageModal.Actions>
|
|
14
|
+
* }
|
|
15
|
+
* />
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare const FullPageModalActions: React.FC<React.PropsWithChildren>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface NavMenuLayoutProps {
|
|
3
|
+
menu: React.ReactNode;
|
|
4
|
+
children: JSX.Element | JSX.Element[];
|
|
5
|
+
patientSidebar?: JSX.Element;
|
|
6
|
+
isNavDisabled?: boolean;
|
|
7
|
+
disableScrolling?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @param props {NavMenuLayoutProps} - explaining specifically the `disableScrolling` prop:
|
|
12
|
+
*
|
|
13
|
+
* The patient overview page has some challenges we want to overcome in regards to the multiple scrollable
|
|
14
|
+
* content (the charts and the action bar with alerts, etc).
|
|
15
|
+
*
|
|
16
|
+
* In order to have the setup working on the patient overview page and the rest of the application, we have to
|
|
17
|
+
* progamatically disable/enable if that location will have a normal scrolling mechanism with specific margin/padding,
|
|
18
|
+
* or we will need to let the components take care of that.
|
|
19
|
+
*/
|
|
20
|
+
export declare const NavLayout: (props: NavMenuLayoutProps) => JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { NavMenuFooterProps } from "./types/NavMenuFooterProps.type";
|
|
3
|
+
import { NavMenuItemProps } from "./types/NavMenuItemProps.type";
|
|
4
|
+
import { NavMenuHeaderProps } from "./types/NavMenuHeaderProps.type";
|
|
5
|
+
export type NavMenuProps = {
|
|
6
|
+
roleItems: NavMenuItemProps[];
|
|
7
|
+
publicItems: NavMenuItemProps[];
|
|
8
|
+
authenticationItems: {
|
|
9
|
+
login: NavMenuItemProps;
|
|
10
|
+
logout: NavMenuItemProps;
|
|
11
|
+
};
|
|
12
|
+
isUserAuthenticated?: boolean;
|
|
13
|
+
navMenuHeaderProps: NavMenuHeaderProps;
|
|
14
|
+
navMenuFooterProps: NavMenuFooterProps;
|
|
15
|
+
};
|
|
16
|
+
export declare function NavMenu(props: NavMenuProps): JSX.Element;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IconProps } from "../Icons/types/IconProps.type";
|
|
3
|
+
import "./NotificationBanner.css";
|
|
4
|
+
export type NotificationBannerColor = "base" | "blue" | "red" | "green" | "amber";
|
|
5
|
+
export interface NotificationBannerLinkProps {
|
|
6
|
+
text: string;
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
handleClick?: () => void;
|
|
9
|
+
}
|
|
10
|
+
interface NotificationBannerPropsWithText {
|
|
11
|
+
text?: string;
|
|
12
|
+
linkProps?: NotificationBannerLinkProps;
|
|
13
|
+
children?: never;
|
|
14
|
+
}
|
|
15
|
+
interface NotificationBannerPropsWithChildren {
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
text?: never;
|
|
18
|
+
linkProps?: never;
|
|
19
|
+
}
|
|
20
|
+
export type NotificationBannerProps = (NotificationBannerPropsWithChildren | NotificationBannerPropsWithText) & {
|
|
21
|
+
color?: NotificationBannerColor;
|
|
22
|
+
/**
|
|
23
|
+
* The icon can either be one of our icon components or an image url
|
|
24
|
+
*/
|
|
25
|
+
icon?: string | React.FunctionComponent<IconProps>;
|
|
26
|
+
className?: string;
|
|
27
|
+
stretch?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* When stretching the banner, you can also decide if the content should be centered or not.
|
|
30
|
+
*/
|
|
31
|
+
centerContent?: boolean;
|
|
32
|
+
noBorder?: null | boolean;
|
|
33
|
+
};
|
|
34
|
+
export declare const NotificationBanner: {
|
|
35
|
+
(props: NotificationBannerProps): JSX.Element;
|
|
36
|
+
defaultProps: {
|
|
37
|
+
color: string;
|
|
38
|
+
onButtonClick: undefined;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export {};
|