@jordan-mace/chaser-design-system 1.2.7 → 1.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1834 -0
- package/dist/index.mjs +4729 -0
- package/dist/styles/layers.css.d.mts +6 -0
- package/dist/styles/layers.css.mjs +7 -0
- package/dist/styles/reset.css.d.mts +1 -0
- package/dist/styles/reset.css.mjs +24 -0
- package/dist/styles/sprinkles.css.d.mts +246 -0
- package/dist/styles/sprinkles.css.mjs +200 -0
- package/dist/styles/theme.css.d.mts +41 -0
- package/dist/styles/theme.css.mjs +50 -0
- package/package.json +18 -9
- package/src/components/Accordion/Accordion.tsx +21 -16
- package/src/components/Alert/Alert.tsx +11 -7
- package/src/components/Avatar/Avatar.tsx +16 -14
- package/src/components/Badge/Badge.tsx +8 -6
- package/src/components/Box/reset.css.ts +2 -2
- package/src/components/Breadcrumb/Breadcrumb.tsx +7 -10
- package/src/components/Button/Button.tsx +9 -11
- package/src/components/Card/Card.tsx +8 -10
- package/src/components/Checkbox/Checkbox.tsx +11 -8
- package/src/components/Collapse/Collapse.tsx +12 -9
- package/src/components/Combobox/Combobox.tsx +60 -31
- package/src/components/Container/Container.tsx +4 -3
- package/src/components/Divider/Divider.tsx +9 -5
- package/src/components/Drawer/Drawer.tsx +20 -13
- package/src/components/DropdownMenu/DropdownMenu.tsx +37 -15
- package/src/components/EmptyState/EmptyState.tsx +9 -12
- package/src/components/FileUpload/FileUpload.tsx +61 -45
- package/src/components/Form/Form.tsx +6 -8
- package/src/components/Grid/Grid.tsx +18 -13
- package/src/components/Icon/Icon.tsx +7 -6
- package/src/components/Input/Input.tsx +7 -8
- package/src/components/Kbd/Kbd.tsx +5 -4
- package/src/components/List/List.tsx +6 -2
- package/src/components/List/ListItem.tsx +6 -2
- package/src/components/Modal/Modal.tsx +16 -5
- package/src/components/Navbar/Navbar.tsx +2 -1
- package/src/components/Navbar/NavbarItem.tsx +2 -1
- package/src/components/NumberInput/NumberInput.tsx +29 -22
- package/src/components/Pagination/Pagination.tsx +39 -28
- package/src/components/Popover/Popover.tsx +37 -21
- package/src/components/Progress/Progress.tsx +39 -38
- package/src/components/Radio/Radio.tsx +12 -6
- package/src/components/ScrollArea/ScrollArea.tsx +9 -10
- package/src/components/Select/Select.tsx +12 -7
- package/src/components/Separator/Separator.tsx +8 -14
- package/src/components/Skeleton/Skeleton.tsx +11 -13
- package/src/components/Spinner/Spinner.tsx +15 -11
- package/src/components/Stack/Stack.tsx +34 -15
- package/src/components/Stepper/Stepper.tsx +19 -17
- package/src/components/Table/Table.tsx +31 -21
- package/src/components/Tabs/Tabs.tsx +14 -10
- package/src/components/Tag/Tag.tsx +8 -7
- package/src/components/Text/Header.tsx +6 -5
- package/src/components/Text/P.tsx +5 -4
- package/src/components/TextArea/TextArea.tsx +7 -8
- package/src/components/Toggle/Toggle.tsx +16 -7
- package/src/components/Tooltip/Tooltip.tsx +16 -11
- package/src/components/VisuallyHidden/VisuallyHidden.tsx +7 -8
- package/src/index.ts +6 -1
- package/dist/components/Accordion/Accordion.d.ts +0 -16
- package/dist/components/Accordion/Accordion.js +0 -43
- package/dist/components/Accordion/index.d.ts +0 -1
- package/dist/components/Accordion/index.js +0 -1
- package/dist/components/Accordion/styles.css.d.ts +0 -7
- package/dist/components/Accordion/styles.css.js +0 -65
- package/dist/components/Alert/Alert.d.ts +0 -9
- package/dist/components/Alert/Alert.js +0 -8
- package/dist/components/Alert/index.d.ts +0 -1
- package/dist/components/Alert/index.js +0 -1
- package/dist/components/Alert/styles.css.d.ts +0 -4
- package/dist/components/Alert/styles.css.js +0 -54
- package/dist/components/AspectRatio/AspectRatio.d.ts +0 -9
- package/dist/components/AspectRatio/AspectRatio.js +0 -12
- package/dist/components/AspectRatio/index.d.ts +0 -2
- package/dist/components/AspectRatio/index.js +0 -1
- package/dist/components/Avatar/Avatar.d.ts +0 -11
- package/dist/components/Avatar/Avatar.js +0 -13
- package/dist/components/Avatar/index.d.ts +0 -1
- package/dist/components/Avatar/index.js +0 -1
- package/dist/components/Avatar/styles.css.d.ts +0 -4
- package/dist/components/Avatar/styles.css.js +0 -151
- package/dist/components/Badge/Badge.d.ts +0 -11
- package/dist/components/Badge/Badge.js +0 -8
- package/dist/components/Badge/index.d.ts +0 -2
- package/dist/components/Badge/index.js +0 -1
- package/dist/components/Badge/styles.css.d.ts +0 -5
- package/dist/components/Badge/styles.css.js +0 -77
- package/dist/components/Box/Box.d.ts +0 -11
- package/dist/components/Box/Box.js +0 -54
- package/dist/components/Box/index.d.ts +0 -2
- package/dist/components/Box/index.js +0 -1
- package/dist/components/Box/reset.css.d.ts +0 -1
- package/dist/components/Box/reset.css.js +0 -15
- package/dist/components/Breadcrumb/Breadcrumb.d.ts +0 -12
- package/dist/components/Breadcrumb/Breadcrumb.js +0 -8
- package/dist/components/Breadcrumb/index.d.ts +0 -1
- package/dist/components/Breadcrumb/index.js +0 -1
- package/dist/components/Breadcrumb/styles.css.d.ts +0 -6
- package/dist/components/Breadcrumb/styles.css.js +0 -50
- package/dist/components/Button/Button.d.ts +0 -9
- package/dist/components/Button/Button.js +0 -8
- package/dist/components/Button/index.d.ts +0 -1
- package/dist/components/Button/index.js +0 -1
- package/dist/components/Button/styles.css.d.ts +0 -2
- package/dist/components/Button/styles.css.js +0 -30
- package/dist/components/Card/Card.d.ts +0 -8
- package/dist/components/Card/Card.js +0 -8
- package/dist/components/Card/index.d.ts +0 -1
- package/dist/components/Card/index.js +0 -1
- package/dist/components/Card/styles.css.d.ts +0 -2
- package/dist/components/Card/styles.css.js +0 -25
- package/dist/components/Checkbox/Checkbox.d.ts +0 -6
- package/dist/components/Checkbox/Checkbox.js +0 -25
- package/dist/components/Checkbox/index.d.ts +0 -1
- package/dist/components/Checkbox/index.js +0 -1
- package/dist/components/Checkbox/styles.css.d.ts +0 -3
- package/dist/components/Checkbox/styles.css.js +0 -31
- package/dist/components/Collapse/Collapse.d.ts +0 -12
- package/dist/components/Collapse/Collapse.js +0 -56
- package/dist/components/Collapse/index.d.ts +0 -2
- package/dist/components/Collapse/index.js +0 -1
- package/dist/components/Collapse/styles.css.d.ts +0 -3
- package/dist/components/Collapse/styles.css.js +0 -36
- package/dist/components/Combobox/Combobox.d.ts +0 -23
- package/dist/components/Combobox/Combobox.js +0 -104
- package/dist/components/Combobox/index.d.ts +0 -2
- package/dist/components/Combobox/index.js +0 -1
- package/dist/components/Combobox/styles.css.d.ts +0 -13
- package/dist/components/Combobox/styles.css.js +0 -142
- package/dist/components/Container/Container.d.ts +0 -11
- package/dist/components/Container/Container.js +0 -21
- package/dist/components/Container/index.d.ts +0 -2
- package/dist/components/Container/index.js +0 -1
- package/dist/components/Divider/Divider.d.ts +0 -9
- package/dist/components/Divider/Divider.js +0 -8
- package/dist/components/Divider/index.d.ts +0 -2
- package/dist/components/Divider/index.js +0 -1
- package/dist/components/Divider/styles.css.d.ts +0 -4
- package/dist/components/Divider/styles.css.js +0 -41
- package/dist/components/Drawer/Drawer.d.ts +0 -16
- package/dist/components/Drawer/Drawer.js +0 -65
- package/dist/components/Drawer/index.d.ts +0 -2
- package/dist/components/Drawer/index.js +0 -1
- package/dist/components/Drawer/styles.css.d.ts +0 -8
- package/dist/components/Drawer/styles.css.js +0 -125
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +0 -23
- package/dist/components/DropdownMenu/DropdownMenu.js +0 -43
- package/dist/components/DropdownMenu/index.d.ts +0 -2
- package/dist/components/DropdownMenu/index.js +0 -1
- package/dist/components/DropdownMenu/styles.css.d.ts +0 -9
- package/dist/components/DropdownMenu/styles.css.js +0 -93
- package/dist/components/EmptyState/EmptyState.d.ts +0 -10
- package/dist/components/EmptyState/EmptyState.js +0 -8
- package/dist/components/EmptyState/index.d.ts +0 -2
- package/dist/components/EmptyState/index.js +0 -1
- package/dist/components/EmptyState/styles.css.d.ts +0 -5
- package/dist/components/EmptyState/styles.css.js +0 -30
- package/dist/components/FileUpload/FileUpload.d.ts +0 -27
- package/dist/components/FileUpload/FileUpload.js +0 -102
- package/dist/components/FileUpload/index.d.ts +0 -2
- package/dist/components/FileUpload/index.js +0 -1
- package/dist/components/FileUpload/styles.css.d.ts +0 -19
- package/dist/components/FileUpload/styles.css.js +0 -145
- package/dist/components/Form/Form.d.ts +0 -7
- package/dist/components/Form/Form.js +0 -8
- package/dist/components/Form/FormInput.d.ts +0 -5
- package/dist/components/Form/FormInput.js +0 -9
- package/dist/components/Form/index.d.ts +0 -2
- package/dist/components/Form/index.js +0 -2
- package/dist/components/Form/styles.css.d.ts +0 -2
- package/dist/components/Form/styles.css.js +0 -11
- package/dist/components/Grid/Grid.d.ts +0 -13
- package/dist/components/Grid/Grid.js +0 -25
- package/dist/components/Grid/index.d.ts +0 -2
- package/dist/components/Grid/index.js +0 -1
- package/dist/components/Icon/Icon.d.ts +0 -12
- package/dist/components/Icon/Icon.js +0 -21
- package/dist/components/Icon/index.d.ts +0 -1
- package/dist/components/Icon/index.js +0 -1
- package/dist/components/Icon/styles.css.d.ts +0 -1
- package/dist/components/Icon/styles.css.js +0 -9
- package/dist/components/Input/Input.d.ts +0 -7
- package/dist/components/Input/Input.js +0 -9
- package/dist/components/Input/index.d.ts +0 -1
- package/dist/components/Input/index.js +0 -1
- package/dist/components/Input/styles.css.d.ts +0 -2
- package/dist/components/Input/styles.css.js +0 -8
- package/dist/components/Kbd/Kbd.d.ts +0 -7
- package/dist/components/Kbd/Kbd.js +0 -6
- package/dist/components/Kbd/index.d.ts +0 -2
- package/dist/components/Kbd/index.js +0 -1
- package/dist/components/Kbd/styles.css.d.ts +0 -1
- package/dist/components/Kbd/styles.css.js +0 -16
- package/dist/components/List/List.d.ts +0 -5
- package/dist/components/List/List.js +0 -7
- package/dist/components/List/ListItem.d.ts +0 -5
- package/dist/components/List/ListItem.js +0 -7
- package/dist/components/List/index.d.ts +0 -2
- package/dist/components/List/index.js +0 -2
- package/dist/components/List/styles.css.d.ts +0 -2
- package/dist/components/List/styles.css.js +0 -11
- package/dist/components/Modal/Modal.d.ts +0 -13
- package/dist/components/Modal/Modal.js +0 -35
- package/dist/components/Modal/index.d.ts +0 -2
- package/dist/components/Modal/index.js +0 -1
- package/dist/components/Modal/styles.css.d.ts +0 -7
- package/dist/components/Modal/styles.css.js +0 -92
- package/dist/components/Navbar/Navbar.d.ts +0 -6
- package/dist/components/Navbar/Navbar.js +0 -8
- package/dist/components/Navbar/NavbarItem.d.ts +0 -6
- package/dist/components/Navbar/NavbarItem.js +0 -8
- package/dist/components/Navbar/index.d.ts +0 -2
- package/dist/components/Navbar/index.js +0 -2
- package/dist/components/Navbar/styles.css.d.ts +0 -2
- package/dist/components/Navbar/styles.css.js +0 -3
- package/dist/components/NumberInput/NumberInput.d.ts +0 -20
- package/dist/components/NumberInput/NumberInput.js +0 -39
- package/dist/components/NumberInput/index.d.ts +0 -2
- package/dist/components/NumberInput/index.js +0 -1
- package/dist/components/NumberInput/styles.css.d.ts +0 -10
- package/dist/components/NumberInput/styles.css.js +0 -117
- package/dist/components/Pagination/Pagination.d.ts +0 -10
- package/dist/components/Pagination/Pagination.js +0 -47
- package/dist/components/Pagination/index.d.ts +0 -2
- package/dist/components/Pagination/index.js +0 -1
- package/dist/components/Pagination/styles.css.d.ts +0 -4
- package/dist/components/Pagination/styles.css.js +0 -44
- package/dist/components/Popover/Popover.d.ts +0 -18
- package/dist/components/Popover/Popover.js +0 -55
- package/dist/components/Popover/index.d.ts +0 -2
- package/dist/components/Popover/index.js +0 -1
- package/dist/components/Popover/styles.css.d.ts +0 -11
- package/dist/components/Popover/styles.css.js +0 -185
- package/dist/components/Progress/Progress.d.ts +0 -10
- package/dist/components/Progress/Progress.js +0 -9
- package/dist/components/Progress/index.d.ts +0 -1
- package/dist/components/Progress/index.js +0 -1
- package/dist/components/Progress/styles.css.d.ts +0 -4
- package/dist/components/Progress/styles.css.js +0 -71
- package/dist/components/Radio/Radio.d.ts +0 -16
- package/dist/components/Radio/Radio.js +0 -25
- package/dist/components/Radio/index.d.ts +0 -1
- package/dist/components/Radio/index.js +0 -1
- package/dist/components/Radio/styles.css.d.ts +0 -5
- package/dist/components/Radio/styles.css.js +0 -42
- package/dist/components/ScrollArea/ScrollArea.d.ts +0 -11
- package/dist/components/ScrollArea/ScrollArea.js +0 -12
- package/dist/components/ScrollArea/index.d.ts +0 -2
- package/dist/components/ScrollArea/index.js +0 -1
- package/dist/components/ScrollArea/styles.css.d.ts +0 -3
- package/dist/components/ScrollArea/styles.css.js +0 -25
- package/dist/components/Select/Select.d.ts +0 -13
- package/dist/components/Select/Select.js +0 -10
- package/dist/components/Select/index.d.ts +0 -1
- package/dist/components/Select/index.js +0 -1
- package/dist/components/Select/styles.css.d.ts +0 -4
- package/dist/components/Select/styles.css.js +0 -82
- package/dist/components/Separator/Separator.d.ts +0 -8
- package/dist/components/Separator/Separator.js +0 -8
- package/dist/components/Separator/index.d.ts +0 -2
- package/dist/components/Separator/index.js +0 -1
- package/dist/components/Separator/styles.css.d.ts +0 -4
- package/dist/components/Separator/styles.css.js +0 -28
- package/dist/components/Skeleton/Skeleton.d.ts +0 -14
- package/dist/components/Skeleton/Skeleton.js +0 -13
- package/dist/components/Skeleton/index.d.ts +0 -2
- package/dist/components/Skeleton/index.js +0 -1
- package/dist/components/Skeleton/styles.css.d.ts +0 -4
- package/dist/components/Skeleton/styles.css.js +0 -56
- package/dist/components/Spinner/Spinner.d.ts +0 -10
- package/dist/components/Spinner/Spinner.js +0 -8
- package/dist/components/Spinner/index.d.ts +0 -2
- package/dist/components/Spinner/index.js +0 -1
- package/dist/components/Spinner/styles.css.d.ts +0 -4
- package/dist/components/Spinner/styles.css.js +0 -55
- package/dist/components/Stack/Stack.d.ts +0 -16
- package/dist/components/Stack/Stack.js +0 -24
- package/dist/components/Stack/index.d.ts +0 -2
- package/dist/components/Stack/index.js +0 -1
- package/dist/components/Stepper/Stepper.d.ts +0 -18
- package/dist/components/Stepper/Stepper.js +0 -25
- package/dist/components/Stepper/index.d.ts +0 -2
- package/dist/components/Stepper/index.js +0 -1
- package/dist/components/Stepper/styles.css.d.ts +0 -14
- package/dist/components/Stepper/styles.css.js +0 -104
- package/dist/components/Table/Table.d.ts +0 -42
- package/dist/components/Table/Table.js +0 -39
- package/dist/components/Table/index.d.ts +0 -1
- package/dist/components/Table/index.js +0 -1
- package/dist/components/Table/styles.css.d.ts +0 -8
- package/dist/components/Table/styles.css.js +0 -49
- package/dist/components/Tabs/Tabs.d.ts +0 -29
- package/dist/components/Tabs/Tabs.js +0 -52
- package/dist/components/Tabs/index.d.ts +0 -1
- package/dist/components/Tabs/index.js +0 -1
- package/dist/components/Tabs/styles.css.d.ts +0 -6
- package/dist/components/Tabs/styles.css.js +0 -100
- package/dist/components/Tag/Tag.d.ts +0 -16
- package/dist/components/Tag/Tag.js +0 -18
- package/dist/components/Tag/index.d.ts +0 -1
- package/dist/components/Tag/index.js +0 -1
- package/dist/components/Tag/styles.css.d.ts +0 -3
- package/dist/components/Tag/styles.css.js +0 -93
- package/dist/components/Text/Header.d.ts +0 -8
- package/dist/components/Text/Header.js +0 -8
- package/dist/components/Text/P.d.ts +0 -7
- package/dist/components/Text/P.js +0 -8
- package/dist/components/Text/index.d.ts +0 -2
- package/dist/components/Text/index.js +0 -2
- package/dist/components/Text/styles.css.d.ts +0 -2
- package/dist/components/Text/styles.css.js +0 -13
- package/dist/components/TextArea/TextArea.d.ts +0 -7
- package/dist/components/TextArea/TextArea.js +0 -9
- package/dist/components/TextArea/index.d.ts +0 -2
- package/dist/components/TextArea/index.js +0 -1
- package/dist/components/TextArea/styles.css.d.ts +0 -2
- package/dist/components/TextArea/styles.css.js +0 -10
- package/dist/components/Toast/Toast.d.ts +0 -34
- package/dist/components/Toast/Toast.js +0 -177
- package/dist/components/Toast/index.d.ts +0 -1
- package/dist/components/Toast/index.js +0 -1
- package/dist/components/Toast/styles.css.d.ts +0 -21
- package/dist/components/Toast/styles.css.js +0 -192
- package/dist/components/Toggle/Toggle.d.ts +0 -10
- package/dist/components/Toggle/Toggle.js +0 -17
- package/dist/components/Toggle/index.d.ts +0 -2
- package/dist/components/Toggle/index.js +0 -1
- package/dist/components/Toggle/styles.css.d.ts +0 -12
- package/dist/components/Toggle/styles.css.js +0 -118
- package/dist/components/Tooltip/Tooltip.d.ts +0 -10
- package/dist/components/Tooltip/Tooltip.js +0 -16
- package/dist/components/Tooltip/index.d.ts +0 -2
- package/dist/components/Tooltip/index.js +0 -1
- package/dist/components/Tooltip/styles.css.d.ts +0 -8
- package/dist/components/Tooltip/styles.css.js +0 -86
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +0 -8
- package/dist/components/VisuallyHidden/VisuallyHidden.js +0 -9
- package/dist/components/VisuallyHidden/index.d.ts +0 -2
- package/dist/components/VisuallyHidden/index.js +0 -1
- package/dist/components/VisuallyHidden/styles.css.d.ts +0 -1
- package/dist/components/VisuallyHidden/styles.css.js +0 -12
- package/dist/components/index.d.ts +0 -68
- package/dist/components/index.js +0 -47
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/styles/layers.css.d.ts +0 -3
- package/dist/styles/layers.css.js +0 -3
- package/dist/styles/sprinkles.css.d.ts +0 -241
- package/dist/styles/sprinkles.css.js +0 -165
- package/dist/styles/theme.css.d.ts +0 -38
- package/dist/styles/theme.css.js +0 -51
- package/dist/styles/utils.d.ts +0 -2
- package/dist/styles/utils.js +0 -7
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import clsx from 'clsx';
|
|
3
|
-
import { useState, useRef, useCallback } from 'react';
|
|
4
|
-
import { fileUploadContainer, fileUploadDropzone, fileUploadDropzoneVariants, fileUploadLabel, fileUploadText, fileUploadHint, fileUploadInput, fileUploadList, fileUploadItem, fileUploadItemInfo, fileUploadItemName, fileUploadItemSize, fileUploadRemoveButton, fileUploadError, fileUploadIcon, fileUploadProgressBar, fileUploadProgressFill, fileUploadProgressFillVariants, } from './styles.css';
|
|
5
|
-
import Box from '../Box';
|
|
6
|
-
const formatFileSize = (bytes) => {
|
|
7
|
-
if (bytes === 0)
|
|
8
|
-
return '0 Bytes';
|
|
9
|
-
const k = 1024;
|
|
10
|
-
const sizes = ['Bytes', 'KB', 'MB', 'GB'];
|
|
11
|
-
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
12
|
-
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
|
13
|
-
};
|
|
14
|
-
const FileUpload = ({ label, files = [], onFilesChange, onFileAdd, onFileRemove, accept, multiple = false, maxFileSize, maxFiles, disabled = false, dropzoneText = 'Drag and drop files here, or click to browse', hint, showProgress = true, className, ...props }) => {
|
|
15
|
-
const [isDragOver, setIsDragOver] = useState(false);
|
|
16
|
-
const [error, setError] = useState(null);
|
|
17
|
-
const inputRef = useRef(null);
|
|
18
|
-
const validateFile = (file) => {
|
|
19
|
-
if (maxFileSize && file.size > maxFileSize) {
|
|
20
|
-
return `File size exceeds ${formatFileSize(maxFileSize)}`;
|
|
21
|
-
}
|
|
22
|
-
if (accept) {
|
|
23
|
-
const acceptedTypes = accept.split(',').map(type => type.trim());
|
|
24
|
-
const isAccepted = acceptedTypes.some(type => {
|
|
25
|
-
if (type.includes('*')) {
|
|
26
|
-
return file.type.startsWith(type.replace('/*', ''));
|
|
27
|
-
}
|
|
28
|
-
return file.type === type || file.name.endsWith(type);
|
|
29
|
-
});
|
|
30
|
-
if (!isAccepted) {
|
|
31
|
-
return `File type not accepted. Allowed: ${accept}`;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return null;
|
|
35
|
-
};
|
|
36
|
-
const handleFiles = useCallback((fileList) => {
|
|
37
|
-
if (!fileList || disabled)
|
|
38
|
-
return;
|
|
39
|
-
const newFiles = [];
|
|
40
|
-
const errors = [];
|
|
41
|
-
Array.from(fileList).forEach(file => {
|
|
42
|
-
const validationError = validateFile(file);
|
|
43
|
-
if (validationError) {
|
|
44
|
-
errors.push(`${file.name}: ${validationError}`);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
newFiles.push(file);
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
if (maxFiles && files.length + newFiles.length > maxFiles) {
|
|
51
|
-
errors.push(`Maximum ${maxFiles} files allowed`);
|
|
52
|
-
newFiles.splice(maxFiles - files.length);
|
|
53
|
-
}
|
|
54
|
-
if (errors.length > 0) {
|
|
55
|
-
setError(errors.join(', '));
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
setError(null);
|
|
59
|
-
}
|
|
60
|
-
if (newFiles.length > 0) {
|
|
61
|
-
onFileAdd?.(newFiles);
|
|
62
|
-
}
|
|
63
|
-
}, [disabled, files.length, maxFileSize, maxFiles, accept, onFileAdd]);
|
|
64
|
-
const handleDragOver = (e) => {
|
|
65
|
-
e.preventDefault();
|
|
66
|
-
if (!disabled) {
|
|
67
|
-
setIsDragOver(true);
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
const handleDragLeave = (e) => {
|
|
71
|
-
e.preventDefault();
|
|
72
|
-
setIsDragOver(false);
|
|
73
|
-
};
|
|
74
|
-
const handleDrop = (e) => {
|
|
75
|
-
e.preventDefault();
|
|
76
|
-
setIsDragOver(false);
|
|
77
|
-
handleFiles(e.dataTransfer.files);
|
|
78
|
-
};
|
|
79
|
-
const handleClick = () => {
|
|
80
|
-
if (!disabled) {
|
|
81
|
-
inputRef.current?.click();
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
const handleInputChange = (e) => {
|
|
85
|
-
handleFiles(e.target.files);
|
|
86
|
-
e.target.value = '';
|
|
87
|
-
};
|
|
88
|
-
const handleRemove = (fileId) => {
|
|
89
|
-
onFileRemove?.(fileId);
|
|
90
|
-
};
|
|
91
|
-
const getVariant = () => {
|
|
92
|
-
if (disabled)
|
|
93
|
-
return 'disabled';
|
|
94
|
-
if (error)
|
|
95
|
-
return 'error';
|
|
96
|
-
if (isDragOver)
|
|
97
|
-
return 'dragOver';
|
|
98
|
-
return 'default';
|
|
99
|
-
};
|
|
100
|
-
return (_jsxs(Box, { className: clsx(fileUploadContainer, className), ...props, children: [label && (_jsx(Box, { as: "label", className: fileUploadLabel, children: label })), _jsxs(Box, { as: "div", className: clsx(fileUploadDropzone, fileUploadDropzoneVariants[getVariant()]), onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, onClick: handleClick, role: "button", tabIndex: disabled ? -1 : 0, "aria-disabled": disabled, children: [_jsx(Box, { className: fileUploadIcon, "aria-hidden": "true", children: _jsxs("svg", { width: "48", height: "48", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [_jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), _jsx("polyline", { points: "17,8 12,3 7,8" }), _jsx("line", { x1: "12", y1: "3", x2: "12", y2: "15" })] }) }), _jsx(Box, { as: "p", className: fileUploadText, children: dropzoneText }), hint && (_jsx(Box, { as: "p", className: fileUploadHint, children: hint })), _jsx(Box, { as: "input", ref: inputRef, type: "file", className: fileUploadInput, onChange: handleInputChange, accept: accept, multiple: multiple, disabled: disabled, "aria-label": "File upload input" })] }), error && (_jsx(Box, { as: "p", className: fileUploadError, role: "alert", children: error })), files.length > 0 && (_jsx(Box, { as: "ul", className: fileUploadList, "aria-label": "Uploaded files", children: files.map((file) => (_jsxs(Box, { as: "li", className: fileUploadItem, children: [_jsxs(Box, { className: fileUploadItemInfo, children: [_jsx(Box, { as: "p", className: fileUploadItemName, title: file.name, children: file.name }), _jsxs(Box, { as: "p", className: fileUploadItemSize, children: [formatFileSize(file.size), file.status === 'uploading' && showProgress && ' • Uploading...', file.status === 'success' && ' • Complete', file.status === 'error' && file.errorMessage && ` • ${file.errorMessage}`] }), showProgress && file.status === 'uploading' && (_jsx(Box, { className: fileUploadProgressBar, children: _jsx(Box, { className: clsx(fileUploadProgressFill, fileUploadProgressFillVariants[file.status]), style: { width: `${file.progress}%` } }) }))] }), _jsx(Box, { as: "button", className: fileUploadRemoveButton, onClick: () => handleRemove(file.id), type: "button", "aria-label": `Remove ${file.name}`, children: "\u00D7" })] }, file.id))) }))] }));
|
|
101
|
-
};
|
|
102
|
-
export default FileUpload;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as FileUpload } from './FileUpload';
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export declare const fileUploadContainer: string;
|
|
2
|
-
export declare const fileUploadDropzone: string;
|
|
3
|
-
export declare const fileUploadDropzoneVariants: Record<"default" | "disabled" | "error" | "dragOver", string>;
|
|
4
|
-
export declare const fileUploadLabel: string;
|
|
5
|
-
export declare const fileUploadText: string;
|
|
6
|
-
export declare const fileUploadHint: string;
|
|
7
|
-
export declare const fileUploadInput: string;
|
|
8
|
-
export declare const fileUploadList: string;
|
|
9
|
-
export declare const fileUploadItem: string;
|
|
10
|
-
export declare const fileUploadItemInfo: string;
|
|
11
|
-
export declare const fileUploadItemName: string;
|
|
12
|
-
export declare const fileUploadItemSize: string;
|
|
13
|
-
export declare const fileUploadItemProgress: string;
|
|
14
|
-
export declare const fileUploadRemoveButton: string;
|
|
15
|
-
export declare const fileUploadError: string;
|
|
16
|
-
export declare const fileUploadIcon: string;
|
|
17
|
-
export declare const fileUploadProgressBar: string;
|
|
18
|
-
export declare const fileUploadProgressFill: string;
|
|
19
|
-
export declare const fileUploadProgressFillVariants: Record<"success" | "error" | "uploading", string>;
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { styleVariants } from '@vanilla-extract/css';
|
|
2
|
-
import { vars } from '../../styles/theme.css';
|
|
3
|
-
import { styleWithLayer } from '../../styles/utils';
|
|
4
|
-
export const fileUploadContainer = styleWithLayer({
|
|
5
|
-
width: '100%',
|
|
6
|
-
});
|
|
7
|
-
export const fileUploadDropzone = styleWithLayer({
|
|
8
|
-
border: `2px dashed ${vars.colors.borderDefault}`,
|
|
9
|
-
borderRadius: '12px',
|
|
10
|
-
padding: '2rem',
|
|
11
|
-
textAlign: 'center',
|
|
12
|
-
cursor: 'pointer',
|
|
13
|
-
transition: 'all 0.2s ease',
|
|
14
|
-
backgroundColor: vars.colors.backgroundMuted,
|
|
15
|
-
':hover': {
|
|
16
|
-
borderColor: vars.colors.inputBorderFocused,
|
|
17
|
-
backgroundColor: vars.colors.alertInfoBackground,
|
|
18
|
-
},
|
|
19
|
-
});
|
|
20
|
-
export const fileUploadDropzoneVariants = styleVariants({
|
|
21
|
-
default: {},
|
|
22
|
-
dragOver: {
|
|
23
|
-
borderColor: vars.colors.buttonBackgroundPrimary,
|
|
24
|
-
backgroundColor: vars.colors.alertInfoBackground,
|
|
25
|
-
borderStyle: 'solid',
|
|
26
|
-
},
|
|
27
|
-
error: {
|
|
28
|
-
borderColor: vars.colors.alertErrorBorder,
|
|
29
|
-
backgroundColor: vars.colors.alertErrorBackground,
|
|
30
|
-
},
|
|
31
|
-
disabled: {
|
|
32
|
-
cursor: 'not-allowed',
|
|
33
|
-
opacity: 0.6,
|
|
34
|
-
':hover': {
|
|
35
|
-
borderColor: vars.colors.borderDefault,
|
|
36
|
-
backgroundColor: vars.colors.backgroundMuted,
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
export const fileUploadLabel = styleWithLayer({
|
|
41
|
-
display: 'block',
|
|
42
|
-
fontSize: '14px',
|
|
43
|
-
fontWeight: '500',
|
|
44
|
-
color: vars.colors.textPrimary,
|
|
45
|
-
marginBottom: '8px',
|
|
46
|
-
});
|
|
47
|
-
export const fileUploadText = styleWithLayer({
|
|
48
|
-
fontSize: '14px',
|
|
49
|
-
color: vars.colors.textSecondary,
|
|
50
|
-
marginTop: '0.5rem',
|
|
51
|
-
});
|
|
52
|
-
export const fileUploadHint = styleWithLayer({
|
|
53
|
-
fontSize: '12px',
|
|
54
|
-
color: vars.colors.textSecondary,
|
|
55
|
-
marginTop: '0.5rem',
|
|
56
|
-
});
|
|
57
|
-
export const fileUploadInput = styleWithLayer({
|
|
58
|
-
display: 'none',
|
|
59
|
-
});
|
|
60
|
-
export const fileUploadList = styleWithLayer({
|
|
61
|
-
marginTop: '1rem',
|
|
62
|
-
display: 'flex',
|
|
63
|
-
flexDirection: 'column',
|
|
64
|
-
gap: '0.75rem',
|
|
65
|
-
});
|
|
66
|
-
export const fileUploadItem = styleWithLayer({
|
|
67
|
-
display: 'flex',
|
|
68
|
-
alignItems: 'center',
|
|
69
|
-
gap: '0.75rem',
|
|
70
|
-
padding: '0.75rem',
|
|
71
|
-
backgroundColor: vars.colors.backgroundDefault,
|
|
72
|
-
border: `1px solid ${vars.colors.borderMuted}`,
|
|
73
|
-
borderRadius: '8px',
|
|
74
|
-
});
|
|
75
|
-
export const fileUploadItemInfo = styleWithLayer({
|
|
76
|
-
flex: 1,
|
|
77
|
-
minWidth: 0,
|
|
78
|
-
});
|
|
79
|
-
export const fileUploadItemName = styleWithLayer({
|
|
80
|
-
fontSize: '14px',
|
|
81
|
-
fontWeight: '500',
|
|
82
|
-
color: vars.colors.textPrimary,
|
|
83
|
-
whiteSpace: 'nowrap',
|
|
84
|
-
overflow: 'hidden',
|
|
85
|
-
textOverflow: 'ellipsis',
|
|
86
|
-
});
|
|
87
|
-
export const fileUploadItemSize = styleWithLayer({
|
|
88
|
-
fontSize: '12px',
|
|
89
|
-
color: vars.colors.textSecondary,
|
|
90
|
-
marginTop: '2px',
|
|
91
|
-
});
|
|
92
|
-
export const fileUploadItemProgress = styleWithLayer({
|
|
93
|
-
flex: 1,
|
|
94
|
-
maxWidth: '200px',
|
|
95
|
-
});
|
|
96
|
-
export const fileUploadRemoveButton = styleWithLayer({
|
|
97
|
-
background: 'none',
|
|
98
|
-
border: 'none',
|
|
99
|
-
cursor: 'pointer',
|
|
100
|
-
padding: '0.25rem',
|
|
101
|
-
color: vars.colors.textSecondary,
|
|
102
|
-
fontSize: '18px',
|
|
103
|
-
display: 'flex',
|
|
104
|
-
alignItems: 'center',
|
|
105
|
-
justifyContent: 'center',
|
|
106
|
-
borderRadius: '4px',
|
|
107
|
-
transition: 'all 0.15s ease',
|
|
108
|
-
':hover': {
|
|
109
|
-
color: vars.colors.alertErrorText,
|
|
110
|
-
backgroundColor: vars.colors.alertErrorBackground,
|
|
111
|
-
},
|
|
112
|
-
});
|
|
113
|
-
export const fileUploadError = styleWithLayer({
|
|
114
|
-
fontSize: '12px',
|
|
115
|
-
color: vars.colors.alertErrorText,
|
|
116
|
-
marginTop: '0.5rem',
|
|
117
|
-
});
|
|
118
|
-
export const fileUploadIcon = styleWithLayer({
|
|
119
|
-
fontSize: '24px',
|
|
120
|
-
color: vars.colors.textSecondary,
|
|
121
|
-
});
|
|
122
|
-
export const fileUploadProgressBar = styleWithLayer({
|
|
123
|
-
width: '100%',
|
|
124
|
-
height: '4px',
|
|
125
|
-
backgroundColor: vars.colors.borderMuted,
|
|
126
|
-
borderRadius: '2px',
|
|
127
|
-
overflow: 'hidden',
|
|
128
|
-
marginTop: '0.5rem',
|
|
129
|
-
});
|
|
130
|
-
export const fileUploadProgressFill = styleWithLayer({
|
|
131
|
-
height: '100%',
|
|
132
|
-
backgroundColor: vars.colors.buttonBackgroundPrimary,
|
|
133
|
-
transition: 'width 0.3s ease',
|
|
134
|
-
});
|
|
135
|
-
export const fileUploadProgressFillVariants = styleVariants({
|
|
136
|
-
uploading: {
|
|
137
|
-
backgroundColor: vars.colors.buttonBackgroundPrimary,
|
|
138
|
-
},
|
|
139
|
-
success: {
|
|
140
|
-
backgroundColor: vars.colors.alertSuccessBorder,
|
|
141
|
-
},
|
|
142
|
-
error: {
|
|
143
|
-
backgroundColor: vars.colors.alertErrorBorder,
|
|
144
|
-
},
|
|
145
|
-
});
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import clsx from 'clsx';
|
|
3
|
-
import { formStyle } from './styles.css';
|
|
4
|
-
import Box from '../Box';
|
|
5
|
-
const Form = (props) => {
|
|
6
|
-
return (_jsx(Box, { as: "form", gap: "medium", paddingX: "large", className: clsx(formStyle, props.className), ...props, children: props.children }));
|
|
7
|
-
};
|
|
8
|
-
export default Form;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { InputProps } from '../Input/Input';
|
|
3
|
-
type FormInputProps = React.InputHTMLAttributes<HTMLInputElement> & InputProps;
|
|
4
|
-
declare const FormInput: (props: FormInputProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
export default FormInput;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import clsx from 'clsx';
|
|
3
|
-
import { formInputStyle } from './styles.css';
|
|
4
|
-
import { Input } from '../..';
|
|
5
|
-
import Box from '../Box';
|
|
6
|
-
const FormInput = (props) => {
|
|
7
|
-
return (_jsx(Box, { as: Input, padding: "small", className: clsx(formInputStyle, props.className), label: props.label, ...props }));
|
|
8
|
-
};
|
|
9
|
-
export default FormInput;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { styleWithLayer } from '../../styles/utils';
|
|
2
|
-
export const formStyle = styleWithLayer({
|
|
3
|
-
display: 'grid',
|
|
4
|
-
gridTemplateRows: 'min-content 1fr min-content',
|
|
5
|
-
});
|
|
6
|
-
export const formInputStyle = styleWithLayer({
|
|
7
|
-
display: 'flex',
|
|
8
|
-
flexDirection: 'row',
|
|
9
|
-
justifyContent: 'space-between',
|
|
10
|
-
alignItems: 'center',
|
|
11
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export type GridColumns = 1 | 2 | 3 | 4 | 5 | 6 | 12;
|
|
3
|
-
export type GridGap = 'none' | 'small' | 'medium' | 'large';
|
|
4
|
-
export interface GridProps {
|
|
5
|
-
columns?: GridColumns;
|
|
6
|
-
gap?: GridGap;
|
|
7
|
-
minChildWidth?: string;
|
|
8
|
-
children?: React.ReactNode;
|
|
9
|
-
className?: string;
|
|
10
|
-
style?: React.CSSProperties;
|
|
11
|
-
}
|
|
12
|
-
declare const Grid: React.ForwardRefExoticComponent<GridProps & React.RefAttributes<HTMLElement>>;
|
|
13
|
-
export default Grid;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef } from 'react';
|
|
3
|
-
import Box from '../Box';
|
|
4
|
-
const gapMap = {
|
|
5
|
-
none: '0',
|
|
6
|
-
small: '0.5rem',
|
|
7
|
-
medium: '1rem',
|
|
8
|
-
large: '2rem',
|
|
9
|
-
};
|
|
10
|
-
const Grid = forwardRef(({ columns, gap = 'medium', minChildWidth, children, className, style }, ref) => {
|
|
11
|
-
const gapValue = gap;
|
|
12
|
-
const gridStyle = {
|
|
13
|
-
display: 'grid',
|
|
14
|
-
gap: gapMap[gapValue],
|
|
15
|
-
};
|
|
16
|
-
if (minChildWidth) {
|
|
17
|
-
gridStyle.gridTemplateColumns = `repeat(auto-fit, minmax(${minChildWidth}, 1fr))`;
|
|
18
|
-
}
|
|
19
|
-
else if (columns) {
|
|
20
|
-
gridStyle.gridTemplateColumns = `repeat(${columns}, 1fr)`;
|
|
21
|
-
}
|
|
22
|
-
return (_jsx(Box, { ref: ref, className: className, style: { ...gridStyle, ...style }, children: children }));
|
|
23
|
-
});
|
|
24
|
-
Grid.displayName = 'Grid';
|
|
25
|
-
export default Grid;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as Grid } from './Grid';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
type IconProps = {
|
|
3
|
-
name?: string;
|
|
4
|
-
children?: React.ReactNode;
|
|
5
|
-
className?: string;
|
|
6
|
-
color?: string;
|
|
7
|
-
};
|
|
8
|
-
declare const IconComponent: {
|
|
9
|
-
({ name, children, className, color }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
-
displayName: string;
|
|
11
|
-
};
|
|
12
|
-
export default IconComponent;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import clsx from 'clsx';
|
|
3
|
-
import { icon } from './styles.css';
|
|
4
|
-
import Box from '../Box';
|
|
5
|
-
const IconComponent = ({ name, children, className, color }) => {
|
|
6
|
-
const iconMap = {
|
|
7
|
-
check: '✓',
|
|
8
|
-
error: '✗',
|
|
9
|
-
warning: '⚠',
|
|
10
|
-
info: 'i',
|
|
11
|
-
success: '✓',
|
|
12
|
-
close: '×',
|
|
13
|
-
};
|
|
14
|
-
const displayContent = children || (name ? iconMap[name] : undefined);
|
|
15
|
-
if (!displayContent) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
return (_jsx(Box, { as: "span", className: clsx(icon, className), style: { color }, "aria-hidden": "true", children: displayContent }));
|
|
19
|
-
};
|
|
20
|
-
IconComponent.displayName = 'Icon';
|
|
21
|
-
export default IconComponent;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as Icon } from './Icon';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as Icon } from './Icon';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const icon: string;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import clsx from 'clsx';
|
|
3
|
-
import { inputStyle, label } from './styles.css';
|
|
4
|
-
import { text } from '../Text/styles.css';
|
|
5
|
-
import Box from '../Box';
|
|
6
|
-
const Input = (props) => {
|
|
7
|
-
return (_jsxs(Box, { display: "flex", flexDirection: { mobile: 'column', tablet: 'row' }, gap: "small", children: [props.label && (_jsx(Box, { as: "label", className: clsx(text, label), marginX: { mobile: 'auto', tablet: 'none' }, marginY: { mobile: 'none', tablet: 'auto' }, htmlFor: props.id, children: props.label })), _jsx(Box, { as: "input", className: clsx(inputStyle, props.className), width: props.fullWidth ? '100%' : undefined, ...props })] }));
|
|
8
|
-
};
|
|
9
|
-
export default Input;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as Input } from './Input';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as Input } from './Input';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as Kbd } from './Kbd';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const kbd: string;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { vars } from '../../styles/theme.css';
|
|
2
|
-
import { styleWithLayer } from '../../styles/utils';
|
|
3
|
-
export const kbd = styleWithLayer({
|
|
4
|
-
display: 'inline-block',
|
|
5
|
-
padding: '0.125rem 0.375rem',
|
|
6
|
-
fontFamily: 'monospace',
|
|
7
|
-
fontSize: '0.85em',
|
|
8
|
-
fontWeight: '600',
|
|
9
|
-
lineHeight: '1.5',
|
|
10
|
-
color: vars.colors.textPrimary,
|
|
11
|
-
backgroundColor: vars.colors.backgroundMuted,
|
|
12
|
-
border: `1px solid ${vars.colors.borderDefault}`,
|
|
13
|
-
borderRadius: '4px',
|
|
14
|
-
boxShadow: '0 2px 0 rgba(0, 0, 0, 0.1)',
|
|
15
|
-
whiteSpace: 'nowrap',
|
|
16
|
-
});
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { style } from '@vanilla-extract/css';
|
|
2
|
-
import { vars } from '../../styles/theme.css';
|
|
3
|
-
export const list = style({
|
|
4
|
-
listStyle: 'none',
|
|
5
|
-
padding: 0,
|
|
6
|
-
margin: 0,
|
|
7
|
-
});
|
|
8
|
-
export const listItem = style({
|
|
9
|
-
padding: '0.5rem 0',
|
|
10
|
-
borderBottom: `1px solid ${vars.colors.listBorder}`,
|
|
11
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export type ModalSize = 'small' | 'medium' | 'large' | 'full';
|
|
3
|
-
export interface ModalProps extends React.HTMLAttributes<HTMLDialogElement> {
|
|
4
|
-
isOpen: boolean;
|
|
5
|
-
onClose: () => void;
|
|
6
|
-
title?: string;
|
|
7
|
-
size?: ModalSize;
|
|
8
|
-
children?: React.ReactNode;
|
|
9
|
-
footer?: React.ReactNode;
|
|
10
|
-
showCloseButton?: boolean;
|
|
11
|
-
}
|
|
12
|
-
declare const Modal: ({ isOpen, onClose, title, size, children, footer, showCloseButton, ...props }: ModalProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
-
export default Modal;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import clsx from 'clsx';
|
|
3
|
-
import { modal, modalVariants, modalHeader, modalTitle, modalCloseButton, modalBody, modalFooter, } from './styles.css';
|
|
4
|
-
import { useEffect, useRef } from 'react';
|
|
5
|
-
import Box from '../Box';
|
|
6
|
-
const Modal = ({ isOpen, onClose, title, size = 'medium', children, footer, showCloseButton = true, ...props }) => {
|
|
7
|
-
const dialogRef = useRef(null);
|
|
8
|
-
useEffect(() => {
|
|
9
|
-
const dialog = dialogRef.current;
|
|
10
|
-
if (!dialog)
|
|
11
|
-
return;
|
|
12
|
-
if (isOpen) {
|
|
13
|
-
dialog.showModal();
|
|
14
|
-
dialog.classList.add('open');
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
dialog.close();
|
|
18
|
-
dialog.classList.remove('open');
|
|
19
|
-
}
|
|
20
|
-
const handleClose = () => {
|
|
21
|
-
onClose();
|
|
22
|
-
};
|
|
23
|
-
dialog.addEventListener('close', handleClose);
|
|
24
|
-
return () => {
|
|
25
|
-
dialog.removeEventListener('close', handleClose);
|
|
26
|
-
};
|
|
27
|
-
}, [isOpen, onClose]);
|
|
28
|
-
return (_jsxs(Box, { as: "dialog", ref: dialogRef, className: clsx(modal, modalVariants[size]), onClick: (e) => {
|
|
29
|
-
// Close when clicking the backdrop
|
|
30
|
-
if (e.target === dialogRef.current) {
|
|
31
|
-
onClose();
|
|
32
|
-
}
|
|
33
|
-
}, ...props, children: [title && (_jsxs(Box, { as: "div", className: modalHeader, children: [_jsx(Box, { as: "h2", className: modalTitle, children: title }), showCloseButton && (_jsx(Box, { as: "button", className: modalCloseButton, onClick: onClose, "aria-label": "Close modal", type: "button", children: "\u00D7" }))] })), _jsx(Box, { as: "div", className: modalBody, children: children }), footer && _jsx(Box, { as: "div", className: modalFooter, children: footer })] }));
|
|
34
|
-
};
|
|
35
|
-
export default Modal;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as Modal } from './Modal';
|