@heymantle/litho 0.0.3 → 0.0.4
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/cjs/components/ActionList.js +50 -16
- package/dist/cjs/components/AnnouncementBar.js +10 -3
- package/dist/cjs/components/AppProvider.js +10 -1
- package/dist/cjs/components/Autocomplete.js +33 -11
- package/dist/cjs/components/Badge.js +2 -1
- package/dist/cjs/components/Banner.js +35 -31
- package/dist/cjs/components/Box.js +5 -3
- package/dist/cjs/components/Button.js +34 -12
- package/dist/cjs/components/Card.js +5 -45
- package/dist/cjs/components/Checkbox.js +16 -6
- package/dist/cjs/components/ChoiceList.js +7 -4
- package/dist/cjs/components/ColorField.js +8 -3
- package/dist/cjs/components/DatePicker.js +13 -8
- package/dist/cjs/components/DropZone.js +33 -18
- package/dist/cjs/components/EmptyState.js +15 -7
- package/dist/cjs/components/Filters.js +32 -20
- package/dist/cjs/components/FooterHelp.js +7 -2
- package/dist/cjs/components/Form.js +18 -3
- package/dist/cjs/components/Frame.js +40 -15
- package/dist/cjs/components/FrameSaveBar.js +21 -12
- package/dist/cjs/components/Layout.js +3 -3
- package/dist/cjs/components/LayoutSection.js +2 -2
- package/dist/cjs/components/Link.js +6 -2
- package/dist/cjs/components/List.js +1 -0
- package/dist/cjs/components/Listbox.js +9 -4
- package/dist/cjs/components/Modal.js +26 -17
- package/dist/cjs/components/Navigation.js +30 -20
- package/dist/cjs/components/Page.js +8 -3
- package/dist/cjs/components/Pagination.js +11 -4
- package/dist/cjs/components/Pane.js +118 -35
- package/dist/cjs/components/Popover.js +59 -6
- package/dist/cjs/components/RangeSlider.js +11 -4
- package/dist/cjs/components/ResourceList.js +9 -3
- package/dist/cjs/components/Select.js +2 -0
- package/dist/cjs/components/Table.js +32 -19
- package/dist/cjs/components/Text.js +8 -5
- package/dist/cjs/components/TextField.js +23 -13
- package/dist/cjs/components/Thumbnail.js +7 -2
- package/dist/cjs/components/TimePicker.js +7 -2
- package/dist/cjs/components/Tip.js +10 -4
- package/dist/cjs/components/Tooltip.js +16 -8
- package/dist/cjs/components/TopBar.js +17 -9
- package/dist/cjs/dev/verify-publish.js +37 -4
- package/dist/cjs/postcss.config.js +21 -0
- package/dist/cjs/stories/ActionList.stories.js +365 -0
- package/dist/cjs/stories/AnnouncementBar.stories.js +244 -0
- package/dist/cjs/stories/Autocomplete.stories.js +871 -0
- package/dist/cjs/stories/Badge.stories.js +183 -0
- package/dist/cjs/stories/Banner.stories.js +201 -0
- package/dist/cjs/stories/Box.stories.js +599 -0
- package/dist/cjs/stories/Button.stories.js +325 -0
- package/dist/cjs/stories/ButtonGroup.stories.js +404 -0
- package/dist/cjs/stories/Card.stories.js +278 -0
- package/dist/cjs/stories/Checkbox.stories.js +266 -0
- package/dist/cjs/stories/ChoiceList.stories.js +884 -0
- package/dist/cjs/stories/Collapsible.stories.js +905 -0
- package/dist/cjs/stories/ColorField.stories.js +883 -0
- package/dist/cjs/stories/ContextualSaveBar.stories.js +970 -0
- package/dist/cjs/stories/DatePicker.stories.js +584 -0
- package/dist/cjs/stories/Divider.stories.js +759 -0
- package/dist/cjs/stories/DropZone.stories.js +1205 -0
- package/dist/cjs/stories/EmptyState.stories.js +296 -0
- package/dist/cjs/stories/Filters.stories.js +1353 -0
- package/dist/cjs/stories/FooterHelp.stories.js +869 -0
- package/dist/cjs/stories/Form.stories.js +940 -0
- package/dist/cjs/stories/Grid.stories.js +1199 -0
- package/dist/cjs/stories/HorizontalStack.stories.js +1064 -0
- package/dist/cjs/stories/Icon.stories.js +596 -0
- package/dist/cjs/stories/Image.stories.js +883 -0
- package/dist/cjs/stories/InlineError.stories.js +710 -0
- package/dist/cjs/stories/Label.stories.js +665 -0
- package/dist/cjs/stories/Layout.stories.js +685 -0
- package/dist/cjs/stories/LayoutSection.stories.js +1267 -0
- package/dist/cjs/stories/Link.stories.js +423 -0
- package/dist/cjs/stories/List.stories.js +1031 -0
- package/dist/cjs/stories/Listbox.stories.js +820 -0
- package/dist/cjs/stories/Loading.stories.js +900 -0
- package/dist/cjs/stories/Modal.stories.js +363 -0
- package/dist/cjs/stories/Navigation.stories.js +605 -0
- package/dist/cjs/stories/Page.stories.js +318 -0
- package/dist/cjs/stories/Pagination.stories.js +438 -0
- package/dist/cjs/stories/Pane.stories.js +1535 -0
- package/dist/cjs/stories/Popover.stories.js +637 -0
- package/dist/cjs/stories/PopoverManager.stories.js +1225 -0
- package/dist/cjs/stories/ProgressBar.stories.js +506 -0
- package/dist/cjs/stories/RadioButton.stories.js +642 -0
- package/dist/cjs/stories/RadioButtonCard.stories.js +816 -0
- package/dist/cjs/stories/RangeSlider.stories.js +892 -0
- package/dist/cjs/stories/ResourceList.stories.js +1067 -0
- package/dist/cjs/stories/Select.stories.js +413 -0
- package/dist/cjs/stories/SkeletonText.stories.js +776 -0
- package/dist/cjs/stories/Spinner.stories.js +396 -0
- package/dist/cjs/stories/Table.stories.js +628 -0
- package/dist/cjs/stories/Tabs.stories.js +723 -0
- package/dist/cjs/stories/Tag.stories.js +620 -0
- package/dist/cjs/stories/Text.stories.js +262 -0
- package/dist/cjs/stories/TextField.stories.js +377 -0
- package/dist/cjs/stories/Thumbnail.stories.js +859 -0
- package/dist/cjs/stories/TimePicker.stories.js +966 -0
- package/dist/cjs/stories/Tip.stories.js +753 -0
- package/dist/cjs/stories/Tooltip.stories.js +357 -0
- package/dist/cjs/stories/TopBar.stories.js +155 -0
- package/dist/cjs/stories/VerticalStack.stories.js +1287 -0
- package/dist/cjs/tailwind.config.js +17 -0
- package/dist/cjs/utilities/transformers.js +66 -0
- package/dist/cjs/vite.config.js +35 -0
- package/dist/esm/components/ActionList.js +41 -12
- package/dist/esm/components/AnnouncementBar.js +3 -1
- package/dist/esm/components/AppProvider.js +10 -1
- package/dist/esm/components/Autocomplete.js +21 -4
- package/dist/esm/components/Badge.js +2 -2
- package/dist/esm/components/Banner.js +20 -21
- package/dist/esm/components/Box.js +5 -4
- package/dist/esm/components/Button.js +24 -7
- package/dist/esm/components/Card.js +5 -4
- package/dist/esm/components/Checkbox.js +6 -1
- package/dist/esm/components/ChoiceList.js +7 -4
- package/dist/esm/components/ColorField.js +1 -1
- package/dist/esm/components/DatePicker.js +6 -1
- package/dist/esm/components/DropZone.js +14 -4
- package/dist/esm/components/EmptyState.js +4 -1
- package/dist/esm/components/Filters.js +10 -3
- package/dist/esm/components/FooterHelp.js +1 -1
- package/dist/esm/components/Form.js +18 -3
- package/dist/esm/components/Frame.js +18 -6
- package/dist/esm/components/FrameSaveBar.js +10 -6
- package/dist/esm/components/InlineError.js +1 -1
- package/dist/esm/components/Layout.js +4 -4
- package/dist/esm/components/LayoutSection.js +2 -2
- package/dist/esm/components/Link.js +6 -2
- package/dist/esm/components/List.js +1 -0
- package/dist/esm/components/Listbox.js +4 -4
- package/dist/esm/components/Modal.js +8 -4
- package/dist/esm/components/Navigation.js +16 -11
- package/dist/esm/components/Page.js +9 -4
- package/dist/esm/components/Pagination.js +3 -1
- package/dist/esm/components/Pane.js +114 -36
- package/dist/esm/components/Popover.js +18 -6
- package/dist/esm/components/RangeSlider.js +3 -1
- package/dist/esm/components/ResourceList.js +2 -1
- package/dist/esm/components/Select.js +2 -0
- package/dist/esm/components/Table.js +16 -3
- package/dist/esm/components/Text.js +8 -6
- package/dist/esm/components/TextField.js +6 -1
- package/dist/esm/components/Thumbnail.js +1 -1
- package/dist/esm/components/TimePicker.js +1 -1
- package/dist/esm/components/Tip.js +3 -2
- package/dist/esm/components/Tooltip.js +4 -1
- package/dist/esm/components/TopBar.js +7 -4
- package/dist/esm/dev/verify-publish.js +37 -4
- package/dist/esm/postcss.config.js +6 -0
- package/dist/esm/stories/ActionList.stories.js +327 -0
- package/dist/esm/stories/AnnouncementBar.stories.js +212 -0
- package/dist/esm/stories/Autocomplete.stories.js +833 -0
- package/dist/esm/stories/Badge.stories.js +138 -0
- package/dist/esm/stories/Banner.stories.js +159 -0
- package/dist/esm/stories/Box.stories.js +558 -0
- package/dist/esm/stories/Button.stories.js +277 -0
- package/dist/esm/stories/ButtonGroup.stories.js +357 -0
- package/dist/esm/stories/Card.stories.js +240 -0
- package/dist/esm/stories/Checkbox.stories.js +219 -0
- package/dist/esm/stories/ChoiceList.stories.js +834 -0
- package/dist/esm/stories/Collapsible.stories.js +867 -0
- package/dist/esm/stories/ColorField.stories.js +842 -0
- package/dist/esm/stories/ContextualSaveBar.stories.js +938 -0
- package/dist/esm/stories/DatePicker.stories.js +537 -0
- package/dist/esm/stories/Divider.stories.js +715 -0
- package/dist/esm/stories/DropZone.stories.js +1161 -0
- package/dist/esm/stories/EmptyState.stories.js +246 -0
- package/dist/esm/stories/Filters.stories.js +1315 -0
- package/dist/esm/stories/FooterHelp.stories.js +813 -0
- package/dist/esm/stories/Form.stories.js +905 -0
- package/dist/esm/stories/Grid.stories.js +1152 -0
- package/dist/esm/stories/HorizontalStack.stories.js +1011 -0
- package/dist/esm/stories/Icon.stories.js +555 -0
- package/dist/esm/stories/Image.stories.js +836 -0
- package/dist/esm/stories/InlineError.stories.js +666 -0
- package/dist/esm/stories/Label.stories.js +612 -0
- package/dist/esm/stories/Layout.stories.js +647 -0
- package/dist/esm/stories/LayoutSection.stories.js +1226 -0
- package/dist/esm/stories/Link.stories.js +379 -0
- package/dist/esm/stories/List.stories.js +975 -0
- package/dist/esm/stories/Listbox.stories.js +776 -0
- package/dist/esm/stories/Loading.stories.js +850 -0
- package/dist/esm/stories/Modal.stories.js +322 -0
- package/dist/esm/stories/Navigation.stories.js +567 -0
- package/dist/esm/stories/Page.stories.js +276 -0
- package/dist/esm/stories/Pagination.stories.js +394 -0
- package/dist/esm/stories/Pane.stories.js +1497 -0
- package/dist/esm/stories/Popover.stories.js +605 -0
- package/dist/esm/stories/PopoverManager.stories.js +1193 -0
- package/dist/esm/stories/ProgressBar.stories.js +465 -0
- package/dist/esm/stories/RadioButton.stories.js +598 -0
- package/dist/esm/stories/RadioButtonCard.stories.js +772 -0
- package/dist/esm/stories/RangeSlider.stories.js +845 -0
- package/dist/esm/stories/ResourceList.stories.js +1029 -0
- package/dist/esm/stories/Select.stories.js +363 -0
- package/dist/esm/stories/SkeletonText.stories.js +717 -0
- package/dist/esm/stories/Spinner.stories.js +355 -0
- package/dist/esm/stories/Table.stories.js +584 -0
- package/dist/esm/stories/Tabs.stories.js +685 -0
- package/dist/esm/stories/Tag.stories.js +573 -0
- package/dist/esm/stories/Text.stories.js +217 -0
- package/dist/esm/stories/TextField.stories.js +332 -0
- package/dist/esm/stories/Thumbnail.stories.js +806 -0
- package/dist/esm/stories/TimePicker.stories.js +910 -0
- package/dist/esm/stories/Tip.stories.js +706 -0
- package/dist/esm/stories/Tooltip.stories.js +313 -0
- package/dist/esm/stories/TopBar.stories.js +114 -0
- package/dist/esm/stories/VerticalStack.stories.js +1240 -0
- package/dist/esm/tailwind.config.js +7 -0
- package/dist/esm/utilities/transformers.js +47 -0
- package/dist/esm/vite.config.js +20 -0
- package/dist/types/components/ActionList.d.ts +122 -0
- package/dist/types/components/ActionList.d.ts.map +1 -0
- package/dist/types/components/AnnouncementBar.d.ts +21 -0
- package/dist/types/components/AnnouncementBar.d.ts.map +1 -0
- package/dist/types/components/AppProvider.d.ts +61 -0
- package/dist/types/components/AppProvider.d.ts.map +1 -0
- package/dist/types/components/Autocomplete.d.ts +130 -0
- package/dist/types/components/Autocomplete.d.ts.map +1 -0
- package/dist/types/components/Badge.d.ts +21 -0
- package/dist/types/components/Badge.d.ts.map +1 -0
- package/dist/types/components/Banner.d.ts +78 -0
- package/dist/types/components/Banner.d.ts.map +1 -0
- package/dist/types/components/Box.d.ts +70 -0
- package/dist/types/components/Box.d.ts.map +1 -0
- package/dist/types/components/Button.d.ts +123 -0
- package/dist/types/components/Button.d.ts.map +1 -0
- package/dist/types/components/ButtonGroup.d.ts +26 -0
- package/dist/types/components/ButtonGroup.d.ts.map +1 -0
- package/dist/types/components/Card.d.ts +139 -0
- package/dist/types/components/Card.d.ts.map +1 -0
- package/dist/types/components/Checkbox.d.ts +56 -0
- package/dist/types/components/Checkbox.d.ts.map +1 -0
- package/dist/types/components/ChoiceList.d.ts +69 -0
- package/dist/types/components/ChoiceList.d.ts.map +1 -0
- package/dist/types/components/Collapsible.d.ts +17 -0
- package/dist/types/components/Collapsible.d.ts.map +1 -0
- package/dist/types/components/ColorField.d.ts +36 -0
- package/dist/types/components/ColorField.d.ts.map +1 -0
- package/dist/types/components/ContextualSaveBar.d.ts +22 -0
- package/dist/types/components/ContextualSaveBar.d.ts.map +1 -0
- package/dist/types/components/DatePicker.d.ts +66 -0
- package/dist/types/components/DatePicker.d.ts.map +1 -0
- package/dist/types/components/Divider.d.ts +21 -0
- package/dist/types/components/Divider.d.ts.map +1 -0
- package/dist/types/components/DropZone.d.ts +108 -0
- package/dist/types/components/DropZone.d.ts.map +1 -0
- package/dist/types/components/EmptyState.d.ts +52 -0
- package/dist/types/components/EmptyState.d.ts.map +1 -0
- package/dist/types/components/Filters.d.ts +166 -0
- package/dist/types/components/Filters.d.ts.map +1 -0
- package/dist/types/components/FooterHelp.d.ts +21 -0
- package/dist/types/components/FooterHelp.d.ts.map +1 -0
- package/dist/types/components/Form.d.ts +39 -0
- package/dist/types/components/Form.d.ts.map +1 -0
- package/dist/types/components/Frame.d.ts +51 -0
- package/dist/types/components/Frame.d.ts.map +1 -0
- package/dist/types/components/FrameSaveBar.d.ts +8 -0
- package/dist/types/components/FrameSaveBar.d.ts.map +1 -0
- package/dist/types/components/Grid.d.ts +39 -0
- package/dist/types/components/Grid.d.ts.map +1 -0
- package/dist/types/components/HorizontalStack.d.ts +36 -0
- package/dist/types/components/HorizontalStack.d.ts.map +1 -0
- package/dist/types/components/Icon.d.ts +43 -0
- package/dist/types/components/Icon.d.ts.map +1 -0
- package/dist/types/components/Image.d.ts +45 -0
- package/dist/types/components/Image.d.ts.map +1 -0
- package/dist/types/components/InlineError.d.ts +22 -0
- package/dist/types/components/InlineError.d.ts.map +1 -0
- package/dist/types/components/Label.d.ts +28 -0
- package/dist/types/components/Label.d.ts.map +1 -0
- package/dist/types/components/Layout.d.ts +44 -0
- package/dist/types/components/Layout.d.ts.map +1 -0
- package/dist/types/components/LayoutSection.d.ts +24 -0
- package/dist/types/components/LayoutSection.d.ts.map +1 -0
- package/dist/types/components/Link.d.ts +38 -0
- package/dist/types/components/Link.d.ts.map +1 -0
- package/dist/types/components/List.d.ts +33 -0
- package/dist/types/components/List.d.ts.map +1 -0
- package/dist/types/components/Listbox.d.ts +34 -0
- package/dist/types/components/Listbox.d.ts.map +1 -0
- package/dist/types/components/Loading.d.ts +13 -0
- package/dist/types/components/Loading.d.ts.map +1 -0
- package/dist/types/components/Modal.d.ts +75 -0
- package/dist/types/components/Modal.d.ts.map +1 -0
- package/dist/types/components/Navigation.d.ts +105 -0
- package/dist/types/components/Navigation.d.ts.map +1 -0
- package/dist/types/components/Page.d.ts +59 -0
- package/dist/types/components/Page.d.ts.map +1 -0
- package/dist/types/components/Pagination.d.ts +39 -0
- package/dist/types/components/Pagination.d.ts.map +1 -0
- package/dist/types/components/Pane.d.ts +11 -0
- package/dist/types/components/Pane.d.ts.map +1 -0
- package/dist/types/components/Popover.d.ts +56 -0
- package/dist/types/components/Popover.d.ts.map +1 -0
- package/dist/types/components/PopoverManager.d.ts +3 -0
- package/dist/types/components/PopoverManager.d.ts.map +1 -0
- package/dist/types/components/ProgressBar.d.ts +24 -0
- package/dist/types/components/ProgressBar.d.ts.map +1 -0
- package/dist/types/components/RadioButton.d.ts +39 -0
- package/dist/types/components/RadioButton.d.ts.map +1 -0
- package/dist/types/components/RadioButtonCard.d.ts +41 -0
- package/dist/types/components/RadioButtonCard.d.ts.map +1 -0
- package/dist/types/components/RangeSlider.d.ts +44 -0
- package/dist/types/components/RangeSlider.d.ts.map +1 -0
- package/dist/types/components/ResourceList.d.ts +54 -0
- package/dist/types/components/ResourceList.d.ts.map +1 -0
- package/dist/types/components/Select.d.ts +48 -0
- package/dist/types/components/Select.d.ts.map +1 -0
- package/dist/types/components/SkeletonText.d.ts +28 -0
- package/dist/types/components/SkeletonText.d.ts.map +1 -0
- package/dist/types/components/Spinner.d.ts +18 -0
- package/dist/types/components/Spinner.d.ts.map +1 -0
- package/dist/types/components/Table.d.ts +197 -0
- package/dist/types/components/Table.d.ts.map +1 -0
- package/dist/types/components/Tabs.d.ts +41 -0
- package/dist/types/components/Tabs.d.ts.map +1 -0
- package/dist/types/components/Tag.d.ts +26 -0
- package/dist/types/components/Tag.d.ts.map +1 -0
- package/dist/types/components/Text.d.ts +32 -0
- package/dist/types/components/Text.d.ts.map +1 -0
- package/dist/types/components/TextField.d.ts +109 -0
- package/dist/types/components/TextField.d.ts.map +1 -0
- package/dist/types/components/Thumbnail.d.ts +18 -0
- package/dist/types/components/Thumbnail.d.ts.map +1 -0
- package/dist/types/components/TimePicker.d.ts +3 -0
- package/dist/types/components/TimePicker.d.ts.map +1 -0
- package/dist/types/components/Tip.d.ts +23 -0
- package/dist/types/components/Tip.d.ts.map +1 -0
- package/dist/types/components/Tooltip.d.ts +84 -0
- package/dist/types/components/Tooltip.d.ts.map +1 -0
- package/dist/types/components/TopBar.d.ts +43 -0
- package/dist/types/components/TopBar.d.ts.map +1 -0
- package/dist/types/components/VerticalStack.d.ts +27 -0
- package/dist/types/components/VerticalStack.d.ts.map +1 -0
- package/dist/types/index.d.ts +62 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/styles/Table.d.ts +1570 -0
- package/dist/types/styles/Table.d.ts.map +1 -0
- package/dist/types/utilities/dates.d.ts +46 -0
- package/dist/types/utilities/dates.d.ts.map +1 -0
- package/dist/types/utilities/transformers.d.ts +4 -0
- package/dist/types/utilities/transformers.d.ts.map +1 -0
- package/dist/types/utilities/useIndexResourceState.d.ts +21 -0
- package/dist/types/utilities/useIndexResourceState.d.ts.map +1 -0
- package/dist/types/utilities/useMounted.d.ts +2 -0
- package/dist/types/utilities/useMounted.d.ts.map +1 -0
- package/dist/types/utilities/useTableScrollState.d.ts +29 -0
- package/dist/types/utilities/useTableScrollState.d.ts.map +1 -0
- package/index.css +6 -0
- package/package.json +37 -6
|
@@ -0,0 +1,1161 @@
|
|
|
1
|
+
function _array_like_to_array(arr, len) {
|
|
2
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
+
return arr2;
|
|
5
|
+
}
|
|
6
|
+
function _array_with_holes(arr) {
|
|
7
|
+
if (Array.isArray(arr)) return arr;
|
|
8
|
+
}
|
|
9
|
+
function _array_without_holes(arr) {
|
|
10
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
11
|
+
}
|
|
12
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
13
|
+
try {
|
|
14
|
+
var info = gen[key](arg);
|
|
15
|
+
var value = info.value;
|
|
16
|
+
} catch (error) {
|
|
17
|
+
reject(error);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (info.done) {
|
|
21
|
+
resolve(value);
|
|
22
|
+
} else {
|
|
23
|
+
Promise.resolve(value).then(_next, _throw);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function _async_to_generator(fn) {
|
|
27
|
+
return function() {
|
|
28
|
+
var self = this, args = arguments;
|
|
29
|
+
return new Promise(function(resolve, reject) {
|
|
30
|
+
var gen = fn.apply(self, args);
|
|
31
|
+
function _next(value) {
|
|
32
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
33
|
+
}
|
|
34
|
+
function _throw(err) {
|
|
35
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
36
|
+
}
|
|
37
|
+
_next(undefined);
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function _define_property(obj, key, value) {
|
|
42
|
+
if (key in obj) {
|
|
43
|
+
Object.defineProperty(obj, key, {
|
|
44
|
+
value: value,
|
|
45
|
+
enumerable: true,
|
|
46
|
+
configurable: true,
|
|
47
|
+
writable: true
|
|
48
|
+
});
|
|
49
|
+
} else {
|
|
50
|
+
obj[key] = value;
|
|
51
|
+
}
|
|
52
|
+
return obj;
|
|
53
|
+
}
|
|
54
|
+
function _iterable_to_array(iter) {
|
|
55
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
56
|
+
}
|
|
57
|
+
function _iterable_to_array_limit(arr, i) {
|
|
58
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
59
|
+
if (_i == null) return;
|
|
60
|
+
var _arr = [];
|
|
61
|
+
var _n = true;
|
|
62
|
+
var _d = false;
|
|
63
|
+
var _s, _e;
|
|
64
|
+
try {
|
|
65
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
66
|
+
_arr.push(_s.value);
|
|
67
|
+
if (i && _arr.length === i) break;
|
|
68
|
+
}
|
|
69
|
+
} catch (err) {
|
|
70
|
+
_d = true;
|
|
71
|
+
_e = err;
|
|
72
|
+
} finally{
|
|
73
|
+
try {
|
|
74
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
75
|
+
} finally{
|
|
76
|
+
if (_d) throw _e;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return _arr;
|
|
80
|
+
}
|
|
81
|
+
function _non_iterable_rest() {
|
|
82
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
83
|
+
}
|
|
84
|
+
function _non_iterable_spread() {
|
|
85
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
86
|
+
}
|
|
87
|
+
function _object_spread(target) {
|
|
88
|
+
for(var i = 1; i < arguments.length; i++){
|
|
89
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
90
|
+
var ownKeys = Object.keys(source);
|
|
91
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
92
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
93
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
96
|
+
ownKeys.forEach(function(key) {
|
|
97
|
+
_define_property(target, key, source[key]);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return target;
|
|
101
|
+
}
|
|
102
|
+
function ownKeys(object, enumerableOnly) {
|
|
103
|
+
var keys = Object.keys(object);
|
|
104
|
+
if (Object.getOwnPropertySymbols) {
|
|
105
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
106
|
+
if (enumerableOnly) {
|
|
107
|
+
symbols = symbols.filter(function(sym) {
|
|
108
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
keys.push.apply(keys, symbols);
|
|
112
|
+
}
|
|
113
|
+
return keys;
|
|
114
|
+
}
|
|
115
|
+
function _object_spread_props(target, source) {
|
|
116
|
+
source = source != null ? source : {};
|
|
117
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
118
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
119
|
+
} else {
|
|
120
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
121
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return target;
|
|
125
|
+
}
|
|
126
|
+
function _sliced_to_array(arr, i) {
|
|
127
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
128
|
+
}
|
|
129
|
+
function _to_consumable_array(arr) {
|
|
130
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
131
|
+
}
|
|
132
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
133
|
+
if (!o) return;
|
|
134
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
135
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
136
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
137
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
138
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
139
|
+
}
|
|
140
|
+
function _ts_generator(thisArg, body) {
|
|
141
|
+
var f, y, t, _ = {
|
|
142
|
+
label: 0,
|
|
143
|
+
sent: function() {
|
|
144
|
+
if (t[0] & 1) throw t[1];
|
|
145
|
+
return t[1];
|
|
146
|
+
},
|
|
147
|
+
trys: [],
|
|
148
|
+
ops: []
|
|
149
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
150
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
151
|
+
return this;
|
|
152
|
+
}), g;
|
|
153
|
+
function verb(n) {
|
|
154
|
+
return function(v) {
|
|
155
|
+
return step([
|
|
156
|
+
n,
|
|
157
|
+
v
|
|
158
|
+
]);
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function step(op) {
|
|
162
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
163
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
164
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
165
|
+
if (y = 0, t) op = [
|
|
166
|
+
op[0] & 2,
|
|
167
|
+
t.value
|
|
168
|
+
];
|
|
169
|
+
switch(op[0]){
|
|
170
|
+
case 0:
|
|
171
|
+
case 1:
|
|
172
|
+
t = op;
|
|
173
|
+
break;
|
|
174
|
+
case 4:
|
|
175
|
+
_.label++;
|
|
176
|
+
return {
|
|
177
|
+
value: op[1],
|
|
178
|
+
done: false
|
|
179
|
+
};
|
|
180
|
+
case 5:
|
|
181
|
+
_.label++;
|
|
182
|
+
y = op[1];
|
|
183
|
+
op = [
|
|
184
|
+
0
|
|
185
|
+
];
|
|
186
|
+
continue;
|
|
187
|
+
case 7:
|
|
188
|
+
op = _.ops.pop();
|
|
189
|
+
_.trys.pop();
|
|
190
|
+
continue;
|
|
191
|
+
default:
|
|
192
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
193
|
+
_ = 0;
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
197
|
+
_.label = op[1];
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
201
|
+
_.label = t[1];
|
|
202
|
+
t = op;
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
if (t && _.label < t[2]) {
|
|
206
|
+
_.label = t[2];
|
|
207
|
+
_.ops.push(op);
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
if (t[2]) _.ops.pop();
|
|
211
|
+
_.trys.pop();
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
op = body.call(thisArg, _);
|
|
215
|
+
} catch (e) {
|
|
216
|
+
op = [
|
|
217
|
+
6,
|
|
218
|
+
e
|
|
219
|
+
];
|
|
220
|
+
y = 0;
|
|
221
|
+
} finally{
|
|
222
|
+
f = t = 0;
|
|
223
|
+
}
|
|
224
|
+
if (op[0] & 5) throw op[1];
|
|
225
|
+
return {
|
|
226
|
+
value: op[0] ? op[1] : void 0,
|
|
227
|
+
done: true
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
232
|
+
import { useState } from "react";
|
|
233
|
+
import DropZone from "../components/DropZone.js";
|
|
234
|
+
import Text from "../components/Text.js";
|
|
235
|
+
import Card from "../components/Card.js";
|
|
236
|
+
import Button from "../components/Button.js";
|
|
237
|
+
import VerticalStack from "../components/VerticalStack.js";
|
|
238
|
+
import HorizontalStack from "../components/HorizontalStack.js";
|
|
239
|
+
import Box from "../components/Box.js";
|
|
240
|
+
import { transformStorySource } from "../utilities/transformers.js";
|
|
241
|
+
export default {
|
|
242
|
+
title: 'Litho/DropZone',
|
|
243
|
+
component: DropZone,
|
|
244
|
+
parameters: {
|
|
245
|
+
layout: 'padded',
|
|
246
|
+
docs: {
|
|
247
|
+
description: {
|
|
248
|
+
component: "A DropZone component for handling file uploads with drag-and-drop functionality. It supports file type filtering, multiple file uploads, file previews, and various upload states including loading and error handling."
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
args: {
|
|
253
|
+
label: 'Upload files',
|
|
254
|
+
type: 'file',
|
|
255
|
+
allowMultiple: false
|
|
256
|
+
},
|
|
257
|
+
tags: [
|
|
258
|
+
'autodocs'
|
|
259
|
+
],
|
|
260
|
+
argTypes: {
|
|
261
|
+
label: {
|
|
262
|
+
control: 'text',
|
|
263
|
+
description: 'Label for the DropZone'
|
|
264
|
+
},
|
|
265
|
+
type: {
|
|
266
|
+
control: 'select',
|
|
267
|
+
options: [
|
|
268
|
+
'file',
|
|
269
|
+
'image',
|
|
270
|
+
'video'
|
|
271
|
+
],
|
|
272
|
+
description: 'Type of files accepted'
|
|
273
|
+
},
|
|
274
|
+
accept: {
|
|
275
|
+
control: 'object',
|
|
276
|
+
description: 'Array of accepted file types'
|
|
277
|
+
},
|
|
278
|
+
allowMultiple: {
|
|
279
|
+
control: 'boolean',
|
|
280
|
+
description: 'Whether multiple files can be uploaded'
|
|
281
|
+
},
|
|
282
|
+
disabled: {
|
|
283
|
+
control: 'boolean',
|
|
284
|
+
description: 'Whether the DropZone is disabled'
|
|
285
|
+
},
|
|
286
|
+
uploading: {
|
|
287
|
+
control: 'boolean',
|
|
288
|
+
description: 'Whether a file upload is in progress'
|
|
289
|
+
},
|
|
290
|
+
error: {
|
|
291
|
+
control: 'text',
|
|
292
|
+
description: 'Error message to display'
|
|
293
|
+
},
|
|
294
|
+
helpText: {
|
|
295
|
+
control: 'text',
|
|
296
|
+
description: 'Help text displayed below the DropZone'
|
|
297
|
+
},
|
|
298
|
+
showFilePreview: {
|
|
299
|
+
control: 'boolean',
|
|
300
|
+
description: 'Whether file previews are displayed'
|
|
301
|
+
},
|
|
302
|
+
uploadLabel: {
|
|
303
|
+
control: 'text',
|
|
304
|
+
description: 'Label for upload prompt'
|
|
305
|
+
},
|
|
306
|
+
uploadingLabel: {
|
|
307
|
+
control: 'text',
|
|
308
|
+
description: 'Label shown during file uploads'
|
|
309
|
+
},
|
|
310
|
+
dragLabel: {
|
|
311
|
+
control: 'text',
|
|
312
|
+
description: 'Label for the drag area'
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
export var Default = {
|
|
317
|
+
render: function(args) {
|
|
318
|
+
var _useState = _sliced_to_array(useState([]), 2), uploadedFiles = _useState[0], setUploadedFiles = _useState[1];
|
|
319
|
+
var _useState1 = _sliced_to_array(useState(false), 2), uploading = _useState1[0], setUploading = _useState1[1];
|
|
320
|
+
var handleDrop = function(acceptedFiles) {
|
|
321
|
+
return _async_to_generator(function() {
|
|
322
|
+
var newFiles;
|
|
323
|
+
return _ts_generator(this, function(_state) {
|
|
324
|
+
switch(_state.label){
|
|
325
|
+
case 0:
|
|
326
|
+
setUploading(true);
|
|
327
|
+
// Simulate file upload
|
|
328
|
+
return [
|
|
329
|
+
4,
|
|
330
|
+
new Promise(function(resolve) {
|
|
331
|
+
return setTimeout(resolve, 2000);
|
|
332
|
+
})
|
|
333
|
+
];
|
|
334
|
+
case 1:
|
|
335
|
+
_state.sent();
|
|
336
|
+
newFiles = acceptedFiles.map(function(file, index) {
|
|
337
|
+
return {
|
|
338
|
+
fileKey: "file-".concat(Date.now(), "-").concat(index),
|
|
339
|
+
fileName: file.name,
|
|
340
|
+
fileSize: file.size,
|
|
341
|
+
fileType: file.type,
|
|
342
|
+
file: file
|
|
343
|
+
};
|
|
344
|
+
});
|
|
345
|
+
setUploadedFiles(function(prev) {
|
|
346
|
+
return args.allowMultiple ? _to_consumable_array(prev).concat(_to_consumable_array(newFiles)) : [
|
|
347
|
+
newFiles[0]
|
|
348
|
+
];
|
|
349
|
+
});
|
|
350
|
+
setUploading(false);
|
|
351
|
+
return [
|
|
352
|
+
2
|
|
353
|
+
];
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
})();
|
|
357
|
+
};
|
|
358
|
+
var handleRemove = function(fileKey) {
|
|
359
|
+
setUploadedFiles(function(prev) {
|
|
360
|
+
return prev.filter(function(file) {
|
|
361
|
+
return file.fileKey !== fileKey;
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
};
|
|
365
|
+
return /*#__PURE__*/ _jsx(Box, {
|
|
366
|
+
maxInlineSize: "500px",
|
|
367
|
+
children: /*#__PURE__*/ _jsx(Card, {
|
|
368
|
+
title: "File Upload",
|
|
369
|
+
padded: true,
|
|
370
|
+
children: /*#__PURE__*/ _jsx(DropZone, _object_spread_props(_object_spread({}, args), {
|
|
371
|
+
uploading: uploading,
|
|
372
|
+
uploadedFiles: uploadedFiles,
|
|
373
|
+
onDropAccepted: handleDrop,
|
|
374
|
+
onRemove: handleRemove
|
|
375
|
+
}))
|
|
376
|
+
})
|
|
377
|
+
});
|
|
378
|
+
},
|
|
379
|
+
parameters: {
|
|
380
|
+
docs: {
|
|
381
|
+
source: {
|
|
382
|
+
transform: transformStorySource
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
export var ImageUpload = {
|
|
388
|
+
render: function() {
|
|
389
|
+
var _useState = _sliced_to_array(useState([]), 2), uploadedFiles = _useState[0], setUploadedFiles = _useState[1];
|
|
390
|
+
var _useState1 = _sliced_to_array(useState(false), 2), uploading = _useState1[0], setUploading = _useState1[1];
|
|
391
|
+
var handleDrop = function(acceptedFiles) {
|
|
392
|
+
return _async_to_generator(function() {
|
|
393
|
+
var newFiles;
|
|
394
|
+
return _ts_generator(this, function(_state) {
|
|
395
|
+
switch(_state.label){
|
|
396
|
+
case 0:
|
|
397
|
+
setUploading(true);
|
|
398
|
+
return [
|
|
399
|
+
4,
|
|
400
|
+
new Promise(function(resolve) {
|
|
401
|
+
return setTimeout(resolve, 1500);
|
|
402
|
+
})
|
|
403
|
+
];
|
|
404
|
+
case 1:
|
|
405
|
+
_state.sent();
|
|
406
|
+
newFiles = acceptedFiles.map(function(file, index) {
|
|
407
|
+
return {
|
|
408
|
+
fileKey: "image-".concat(Date.now(), "-").concat(index),
|
|
409
|
+
fileName: file.name,
|
|
410
|
+
fileSize: file.size,
|
|
411
|
+
fileType: file.type,
|
|
412
|
+
file: file
|
|
413
|
+
};
|
|
414
|
+
});
|
|
415
|
+
setUploadedFiles(function(prev) {
|
|
416
|
+
return _to_consumable_array(prev).concat(_to_consumable_array(newFiles));
|
|
417
|
+
});
|
|
418
|
+
setUploading(false);
|
|
419
|
+
return [
|
|
420
|
+
2
|
|
421
|
+
];
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
})();
|
|
425
|
+
};
|
|
426
|
+
var handleRemove = function(fileKey) {
|
|
427
|
+
setUploadedFiles(function(prev) {
|
|
428
|
+
return prev.filter(function(file) {
|
|
429
|
+
return file.fileKey !== fileKey;
|
|
430
|
+
});
|
|
431
|
+
});
|
|
432
|
+
};
|
|
433
|
+
return /*#__PURE__*/ _jsx(Box, {
|
|
434
|
+
maxInlineSize: "500px",
|
|
435
|
+
children: /*#__PURE__*/ _jsxs(Card, {
|
|
436
|
+
title: "Product Images",
|
|
437
|
+
padded: true,
|
|
438
|
+
children: [
|
|
439
|
+
/*#__PURE__*/ _jsx(DropZone, {
|
|
440
|
+
label: "Product Images",
|
|
441
|
+
type: "image",
|
|
442
|
+
allowMultiple: true,
|
|
443
|
+
accept: [
|
|
444
|
+
'image/jpeg',
|
|
445
|
+
'image/png',
|
|
446
|
+
'image/webp'
|
|
447
|
+
],
|
|
448
|
+
helpText: "Upload JPEG, PNG, or WebP images. Maximum 10MB per file.",
|
|
449
|
+
uploading: uploading,
|
|
450
|
+
uploadedFiles: uploadedFiles,
|
|
451
|
+
onDropAccepted: handleDrop,
|
|
452
|
+
onRemove: handleRemove,
|
|
453
|
+
uploadLabel: "Drag and drop images or click to browse"
|
|
454
|
+
}),
|
|
455
|
+
uploadedFiles.length > 0 && /*#__PURE__*/ _jsx(Box, {
|
|
456
|
+
paddingBlockStart: "4",
|
|
457
|
+
padding: "2",
|
|
458
|
+
background: "subdued",
|
|
459
|
+
borderRadius: "default",
|
|
460
|
+
children: /*#__PURE__*/ _jsxs(Text, {
|
|
461
|
+
variant: "bodySm",
|
|
462
|
+
children: [
|
|
463
|
+
uploadedFiles.length,
|
|
464
|
+
" image",
|
|
465
|
+
uploadedFiles.length !== 1 ? 's' : '',
|
|
466
|
+
" uploaded"
|
|
467
|
+
]
|
|
468
|
+
})
|
|
469
|
+
})
|
|
470
|
+
]
|
|
471
|
+
})
|
|
472
|
+
});
|
|
473
|
+
},
|
|
474
|
+
parameters: {
|
|
475
|
+
docs: {
|
|
476
|
+
description: {
|
|
477
|
+
story: 'DropZone configured for image uploads with file type restrictions.'
|
|
478
|
+
},
|
|
479
|
+
source: {
|
|
480
|
+
transform: transformStorySource
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
};
|
|
485
|
+
export var MultipleFiles = {
|
|
486
|
+
render: function() {
|
|
487
|
+
var _useState = _sliced_to_array(useState([]), 2), uploadedFiles = _useState[0], setUploadedFiles = _useState[1];
|
|
488
|
+
var _useState1 = _sliced_to_array(useState(false), 2), uploading = _useState1[0], setUploading = _useState1[1];
|
|
489
|
+
var handleDrop = function(acceptedFiles) {
|
|
490
|
+
return _async_to_generator(function() {
|
|
491
|
+
var newFiles;
|
|
492
|
+
return _ts_generator(this, function(_state) {
|
|
493
|
+
switch(_state.label){
|
|
494
|
+
case 0:
|
|
495
|
+
setUploading(true);
|
|
496
|
+
return [
|
|
497
|
+
4,
|
|
498
|
+
new Promise(function(resolve) {
|
|
499
|
+
return setTimeout(resolve, 2000);
|
|
500
|
+
})
|
|
501
|
+
];
|
|
502
|
+
case 1:
|
|
503
|
+
_state.sent();
|
|
504
|
+
newFiles = acceptedFiles.map(function(file, index) {
|
|
505
|
+
return {
|
|
506
|
+
fileKey: "doc-".concat(Date.now(), "-").concat(index),
|
|
507
|
+
fileName: file.name,
|
|
508
|
+
fileSize: file.size,
|
|
509
|
+
fileType: file.type,
|
|
510
|
+
file: file
|
|
511
|
+
};
|
|
512
|
+
});
|
|
513
|
+
setUploadedFiles(function(prev) {
|
|
514
|
+
return _to_consumable_array(prev).concat(_to_consumable_array(newFiles));
|
|
515
|
+
});
|
|
516
|
+
setUploading(false);
|
|
517
|
+
return [
|
|
518
|
+
2
|
|
519
|
+
];
|
|
520
|
+
}
|
|
521
|
+
});
|
|
522
|
+
})();
|
|
523
|
+
};
|
|
524
|
+
var handleRemove = function(fileKey) {
|
|
525
|
+
setUploadedFiles(function(prev) {
|
|
526
|
+
return prev.filter(function(file) {
|
|
527
|
+
return file.fileKey !== fileKey;
|
|
528
|
+
});
|
|
529
|
+
});
|
|
530
|
+
};
|
|
531
|
+
return /*#__PURE__*/ _jsx(Box, {
|
|
532
|
+
maxInlineSize: "500px",
|
|
533
|
+
children: /*#__PURE__*/ _jsxs(Card, {
|
|
534
|
+
title: "Document Upload",
|
|
535
|
+
padded: true,
|
|
536
|
+
children: [
|
|
537
|
+
/*#__PURE__*/ _jsx(DropZone, {
|
|
538
|
+
label: "Project Documents",
|
|
539
|
+
allowMultiple: true,
|
|
540
|
+
accept: [
|
|
541
|
+
'application/pdf',
|
|
542
|
+
'application/msword',
|
|
543
|
+
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
544
|
+
'text/plain'
|
|
545
|
+
],
|
|
546
|
+
helpText: "Upload PDF, Word documents, or text files. You can select multiple files at once.",
|
|
547
|
+
uploading: uploading,
|
|
548
|
+
uploadedFiles: uploadedFiles,
|
|
549
|
+
onDropAccepted: handleDrop,
|
|
550
|
+
onRemove: handleRemove,
|
|
551
|
+
uploadLabel: "Drop documents here or click to browse",
|
|
552
|
+
previewRows: 3
|
|
553
|
+
}),
|
|
554
|
+
/*#__PURE__*/ _jsxs(HorizontalStack, {
|
|
555
|
+
paddingBlockStart: "6",
|
|
556
|
+
align: "space-between",
|
|
557
|
+
blockAlign: "center",
|
|
558
|
+
children: [
|
|
559
|
+
/*#__PURE__*/ _jsxs(Text, {
|
|
560
|
+
variant: "bodySm",
|
|
561
|
+
children: [
|
|
562
|
+
"Total: ",
|
|
563
|
+
uploadedFiles.length,
|
|
564
|
+
" files (",
|
|
565
|
+
(uploadedFiles.reduce(function(sum, file) {
|
|
566
|
+
return sum + file.fileSize;
|
|
567
|
+
}, 0) / 1024 / 1024).toFixed(2),
|
|
568
|
+
" MB)"
|
|
569
|
+
]
|
|
570
|
+
}),
|
|
571
|
+
uploadedFiles.length > 0 && /*#__PURE__*/ _jsx(Button, {
|
|
572
|
+
size: "slim",
|
|
573
|
+
onClick: function() {
|
|
574
|
+
return setUploadedFiles([]);
|
|
575
|
+
},
|
|
576
|
+
children: "Clear All"
|
|
577
|
+
})
|
|
578
|
+
]
|
|
579
|
+
})
|
|
580
|
+
]
|
|
581
|
+
})
|
|
582
|
+
});
|
|
583
|
+
},
|
|
584
|
+
parameters: {
|
|
585
|
+
docs: {
|
|
586
|
+
description: {
|
|
587
|
+
story: 'DropZone for multiple document uploads with file size calculation.'
|
|
588
|
+
},
|
|
589
|
+
source: {
|
|
590
|
+
transform: transformStorySource
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
};
|
|
595
|
+
export var WithErrors = {
|
|
596
|
+
render: function() {
|
|
597
|
+
var _useState = _sliced_to_array(useState([]), 2), uploadedFiles = _useState[0], setUploadedFiles = _useState[1];
|
|
598
|
+
var _useState1 = _sliced_to_array(useState(false), 2), uploading = _useState1[0], setUploading = _useState1[1];
|
|
599
|
+
var _useState2 = _sliced_to_array(useState(''), 2), error = _useState2[0], setError = _useState2[1];
|
|
600
|
+
var _useState3 = _sliced_to_array(useState([]), 2), rejectedFiles = _useState3[0], setRejectedFiles = _useState3[1];
|
|
601
|
+
var handleDropAccepted = function(acceptedFiles) {
|
|
602
|
+
return _async_to_generator(function() {
|
|
603
|
+
var newFiles;
|
|
604
|
+
return _ts_generator(this, function(_state) {
|
|
605
|
+
switch(_state.label){
|
|
606
|
+
case 0:
|
|
607
|
+
setError('');
|
|
608
|
+
setRejectedFiles([]);
|
|
609
|
+
setUploading(true);
|
|
610
|
+
// Simulate potential upload failure
|
|
611
|
+
return [
|
|
612
|
+
4,
|
|
613
|
+
new Promise(function(resolve) {
|
|
614
|
+
return setTimeout(resolve, 1500);
|
|
615
|
+
})
|
|
616
|
+
];
|
|
617
|
+
case 1:
|
|
618
|
+
_state.sent();
|
|
619
|
+
if (Math.random() > 0.7) {
|
|
620
|
+
setError('Upload failed. Please try again.');
|
|
621
|
+
setUploading(false);
|
|
622
|
+
return [
|
|
623
|
+
2
|
|
624
|
+
];
|
|
625
|
+
}
|
|
626
|
+
newFiles = acceptedFiles.map(function(file, index) {
|
|
627
|
+
return {
|
|
628
|
+
fileKey: "file-".concat(Date.now(), "-").concat(index),
|
|
629
|
+
fileName: file.name,
|
|
630
|
+
fileSize: file.size,
|
|
631
|
+
fileType: file.type,
|
|
632
|
+
file: file
|
|
633
|
+
};
|
|
634
|
+
});
|
|
635
|
+
setUploadedFiles(function(prev) {
|
|
636
|
+
return _to_consumable_array(prev).concat(_to_consumable_array(newFiles));
|
|
637
|
+
});
|
|
638
|
+
setUploading(false);
|
|
639
|
+
return [
|
|
640
|
+
2
|
|
641
|
+
];
|
|
642
|
+
}
|
|
643
|
+
});
|
|
644
|
+
})();
|
|
645
|
+
};
|
|
646
|
+
var handleDropRejected = function(rejectedFiles) {
|
|
647
|
+
setRejectedFiles(rejectedFiles);
|
|
648
|
+
setError("".concat(rejectedFiles.length, " file").concat(rejectedFiles.length !== 1 ? 's' : '', " rejected. Only images are allowed."));
|
|
649
|
+
};
|
|
650
|
+
var handleRemove = function(fileKey) {
|
|
651
|
+
setUploadedFiles(function(prev) {
|
|
652
|
+
return prev.filter(function(file) {
|
|
653
|
+
return file.fileKey !== fileKey;
|
|
654
|
+
});
|
|
655
|
+
});
|
|
656
|
+
};
|
|
657
|
+
var retry = function() {
|
|
658
|
+
setError('');
|
|
659
|
+
setRejectedFiles([]);
|
|
660
|
+
};
|
|
661
|
+
return /*#__PURE__*/ _jsx(Box, {
|
|
662
|
+
maxInlineSize: "500px",
|
|
663
|
+
children: /*#__PURE__*/ _jsxs(Card, {
|
|
664
|
+
title: "Image Gallery Upload",
|
|
665
|
+
padded: true,
|
|
666
|
+
children: [
|
|
667
|
+
/*#__PURE__*/ _jsx(DropZone, {
|
|
668
|
+
label: "Gallery Images",
|
|
669
|
+
type: "image",
|
|
670
|
+
allowMultiple: true,
|
|
671
|
+
helpText: "Only image files are accepted. Try uploading non-image files to see error handling.",
|
|
672
|
+
error: error,
|
|
673
|
+
uploading: uploading,
|
|
674
|
+
uploadedFiles: uploadedFiles,
|
|
675
|
+
onDropAccepted: handleDropAccepted,
|
|
676
|
+
onDropRejected: handleDropRejected,
|
|
677
|
+
onRemove: handleRemove
|
|
678
|
+
}),
|
|
679
|
+
rejectedFiles.length > 0 && /*#__PURE__*/ _jsx(Box, {
|
|
680
|
+
paddingBlockStart: "4",
|
|
681
|
+
padding: "4",
|
|
682
|
+
background: "critical",
|
|
683
|
+
borderRadius: "default",
|
|
684
|
+
children: /*#__PURE__*/ _jsxs(VerticalStack, {
|
|
685
|
+
gap: "2",
|
|
686
|
+
children: [
|
|
687
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
688
|
+
variant: "headingSm",
|
|
689
|
+
color: "critical",
|
|
690
|
+
children: "Rejected Files:"
|
|
691
|
+
}),
|
|
692
|
+
rejectedFiles.map(function(file, index) {
|
|
693
|
+
return /*#__PURE__*/ _jsxs(Text, {
|
|
694
|
+
variant: "bodySm",
|
|
695
|
+
color: "critical",
|
|
696
|
+
children: [
|
|
697
|
+
"• ",
|
|
698
|
+
file.name,
|
|
699
|
+
" (",
|
|
700
|
+
file.type || 'unknown type',
|
|
701
|
+
")"
|
|
702
|
+
]
|
|
703
|
+
}, index);
|
|
704
|
+
}),
|
|
705
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
706
|
+
onClick: retry,
|
|
707
|
+
size: "slim",
|
|
708
|
+
children: "Try Again"
|
|
709
|
+
})
|
|
710
|
+
]
|
|
711
|
+
})
|
|
712
|
+
}),
|
|
713
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
714
|
+
paddingBlockStart: "4",
|
|
715
|
+
variant: "bodySm",
|
|
716
|
+
color: "subdued",
|
|
717
|
+
children: "This demo has a 30% chance of simulating upload failures to demonstrate error handling."
|
|
718
|
+
})
|
|
719
|
+
]
|
|
720
|
+
})
|
|
721
|
+
});
|
|
722
|
+
},
|
|
723
|
+
parameters: {
|
|
724
|
+
docs: {
|
|
725
|
+
description: {
|
|
726
|
+
story: 'DropZone with error handling for rejected files and upload failures.'
|
|
727
|
+
},
|
|
728
|
+
source: {
|
|
729
|
+
transform: transformStorySource
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
};
|
|
734
|
+
export var LoadingState = {
|
|
735
|
+
render: function() {
|
|
736
|
+
var _useState = _sliced_to_array(useState(false), 2), previewLoading = _useState[0], setPreviewLoading = _useState[1];
|
|
737
|
+
var _useState1 = _sliced_to_array(useState([]), 2), uploadedFiles = _useState1[0], setUploadedFiles = _useState1[1];
|
|
738
|
+
var simulateLoading = function() {
|
|
739
|
+
setPreviewLoading(true);
|
|
740
|
+
setUploadedFiles([]);
|
|
741
|
+
setTimeout(function() {
|
|
742
|
+
setPreviewLoading(false);
|
|
743
|
+
setUploadedFiles([
|
|
744
|
+
{
|
|
745
|
+
fileKey: 'demo-1',
|
|
746
|
+
fileName: 'presentation.pdf',
|
|
747
|
+
fileSize: 2048000,
|
|
748
|
+
fileType: 'application/pdf'
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
fileKey: 'demo-2',
|
|
752
|
+
fileName: 'spreadsheet.xlsx',
|
|
753
|
+
fileSize: 1536000,
|
|
754
|
+
fileType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
|
755
|
+
}
|
|
756
|
+
]);
|
|
757
|
+
}, 3000);
|
|
758
|
+
};
|
|
759
|
+
var handleRemove = function(fileKey) {
|
|
760
|
+
setUploadedFiles(function(prev) {
|
|
761
|
+
return prev.filter(function(file) {
|
|
762
|
+
return file.fileKey !== fileKey;
|
|
763
|
+
});
|
|
764
|
+
});
|
|
765
|
+
};
|
|
766
|
+
return /*#__PURE__*/ _jsx(Box, {
|
|
767
|
+
maxInlineSize: "500px",
|
|
768
|
+
children: /*#__PURE__*/ _jsxs(Card, {
|
|
769
|
+
title: "Loading States Demo",
|
|
770
|
+
padded: true,
|
|
771
|
+
children: [
|
|
772
|
+
/*#__PURE__*/ _jsx(DropZone, {
|
|
773
|
+
label: "Documents",
|
|
774
|
+
allowMultiple: true,
|
|
775
|
+
helpText: "Click the button below to simulate loading state with file previews.",
|
|
776
|
+
previewLoading: previewLoading,
|
|
777
|
+
uploadedFiles: uploadedFiles,
|
|
778
|
+
onRemove: handleRemove,
|
|
779
|
+
previewRows: 2
|
|
780
|
+
}),
|
|
781
|
+
/*#__PURE__*/ _jsx(Box, {
|
|
782
|
+
paddingBlockStart: "6",
|
|
783
|
+
children: /*#__PURE__*/ _jsx(Button, {
|
|
784
|
+
onClick: simulateLoading,
|
|
785
|
+
disabled: previewLoading,
|
|
786
|
+
primary: true,
|
|
787
|
+
children: previewLoading ? 'Loading...' : 'Simulate File Loading'
|
|
788
|
+
})
|
|
789
|
+
}),
|
|
790
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
791
|
+
paddingBlockStart: "4",
|
|
792
|
+
variant: "bodySm",
|
|
793
|
+
color: "subdued",
|
|
794
|
+
children: "This demonstrates the loading skeleton while files are being processed or fetched."
|
|
795
|
+
})
|
|
796
|
+
]
|
|
797
|
+
})
|
|
798
|
+
});
|
|
799
|
+
},
|
|
800
|
+
parameters: {
|
|
801
|
+
docs: {
|
|
802
|
+
description: {
|
|
803
|
+
story: 'DropZone with loading skeleton for file previews.'
|
|
804
|
+
},
|
|
805
|
+
source: {
|
|
806
|
+
transform: transformStorySource
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
};
|
|
811
|
+
export var DisabledStates = {
|
|
812
|
+
render: function() {
|
|
813
|
+
var _useState = _sliced_to_array(useState([
|
|
814
|
+
{
|
|
815
|
+
fileKey: 'existing-1',
|
|
816
|
+
fileName: 'existing-document.pdf',
|
|
817
|
+
fileSize: 1024000,
|
|
818
|
+
fileType: 'application/pdf'
|
|
819
|
+
}
|
|
820
|
+
]), 2), uploadedFiles = _useState[0], setUploadedFiles = _useState[1];
|
|
821
|
+
var _useState1 = _sliced_to_array(useState(false), 2), disabled = _useState1[0], setDisabled = _useState1[1];
|
|
822
|
+
var handleRemove = function(fileKey) {
|
|
823
|
+
setUploadedFiles(function(prev) {
|
|
824
|
+
return prev.filter(function(file) {
|
|
825
|
+
return file.fileKey !== fileKey;
|
|
826
|
+
});
|
|
827
|
+
});
|
|
828
|
+
};
|
|
829
|
+
return /*#__PURE__*/ _jsxs(VerticalStack, {
|
|
830
|
+
gap: "8",
|
|
831
|
+
children: [
|
|
832
|
+
/*#__PURE__*/ _jsx(Box, {
|
|
833
|
+
maxInlineSize: "500px",
|
|
834
|
+
children: /*#__PURE__*/ _jsxs(Card, {
|
|
835
|
+
title: "Disabled DropZone",
|
|
836
|
+
padded: true,
|
|
837
|
+
children: [
|
|
838
|
+
/*#__PURE__*/ _jsx(Box, {
|
|
839
|
+
paddingBlockEnd: "4",
|
|
840
|
+
children: /*#__PURE__*/ _jsxs(HorizontalStack, {
|
|
841
|
+
gap: "2",
|
|
842
|
+
blockAlign: "center",
|
|
843
|
+
children: [
|
|
844
|
+
/*#__PURE__*/ _jsx("input", {
|
|
845
|
+
type: "checkbox",
|
|
846
|
+
checked: disabled,
|
|
847
|
+
onChange: function(e) {
|
|
848
|
+
return setDisabled(e.target.checked);
|
|
849
|
+
}
|
|
850
|
+
}),
|
|
851
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
852
|
+
children: "Disable DropZone"
|
|
853
|
+
})
|
|
854
|
+
]
|
|
855
|
+
})
|
|
856
|
+
}),
|
|
857
|
+
/*#__PURE__*/ _jsx(DropZone, {
|
|
858
|
+
label: "Upload Files",
|
|
859
|
+
disabled: disabled,
|
|
860
|
+
helpText: disabled ? "File upload is currently disabled." : "Drag and drop files or click to browse.",
|
|
861
|
+
uploadedFiles: uploadedFiles,
|
|
862
|
+
onRemove: handleRemove,
|
|
863
|
+
allowMultiple: true
|
|
864
|
+
})
|
|
865
|
+
]
|
|
866
|
+
})
|
|
867
|
+
}),
|
|
868
|
+
/*#__PURE__*/ _jsx(Box, {
|
|
869
|
+
maxInlineSize: "500px",
|
|
870
|
+
children: /*#__PURE__*/ _jsxs(Card, {
|
|
871
|
+
title: "Single File Limit",
|
|
872
|
+
padded: true,
|
|
873
|
+
children: [
|
|
874
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
875
|
+
paddingBlockEnd: "4",
|
|
876
|
+
variant: "bodySm",
|
|
877
|
+
children: "This DropZone becomes disabled after one file is uploaded (allowMultiple=false)."
|
|
878
|
+
}),
|
|
879
|
+
/*#__PURE__*/ _jsx(DropZone, {
|
|
880
|
+
label: "Profile Picture",
|
|
881
|
+
type: "image",
|
|
882
|
+
allowMultiple: false,
|
|
883
|
+
helpText: "Upload a single profile image. The upload area will be disabled after selection.",
|
|
884
|
+
uploadedFiles: uploadedFiles.slice(0, 1),
|
|
885
|
+
onRemove: handleRemove,
|
|
886
|
+
showDropZoneWhenDisabled: true
|
|
887
|
+
})
|
|
888
|
+
]
|
|
889
|
+
})
|
|
890
|
+
})
|
|
891
|
+
]
|
|
892
|
+
});
|
|
893
|
+
},
|
|
894
|
+
parameters: {
|
|
895
|
+
docs: {
|
|
896
|
+
description: {
|
|
897
|
+
story: 'DropZone in various disabled states and single file upload mode.'
|
|
898
|
+
},
|
|
899
|
+
source: {
|
|
900
|
+
transform: transformStorySource
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
};
|
|
905
|
+
export var CustomLabelsAndMessages = {
|
|
906
|
+
render: function() {
|
|
907
|
+
var _useState = _sliced_to_array(useState([]), 2), uploadedFiles = _useState[0], setUploadedFiles = _useState[1];
|
|
908
|
+
var _useState1 = _sliced_to_array(useState(false), 2), uploading = _useState1[0], setUploading = _useState1[1];
|
|
909
|
+
var handleDrop = function(acceptedFiles) {
|
|
910
|
+
return _async_to_generator(function() {
|
|
911
|
+
var newFiles;
|
|
912
|
+
return _ts_generator(this, function(_state) {
|
|
913
|
+
switch(_state.label){
|
|
914
|
+
case 0:
|
|
915
|
+
setUploading(true);
|
|
916
|
+
return [
|
|
917
|
+
4,
|
|
918
|
+
new Promise(function(resolve) {
|
|
919
|
+
return setTimeout(resolve, 2000);
|
|
920
|
+
})
|
|
921
|
+
];
|
|
922
|
+
case 1:
|
|
923
|
+
_state.sent();
|
|
924
|
+
newFiles = acceptedFiles.map(function(file, index) {
|
|
925
|
+
return {
|
|
926
|
+
fileKey: "asset-".concat(Date.now(), "-").concat(index),
|
|
927
|
+
fileName: file.name,
|
|
928
|
+
fileSize: file.size,
|
|
929
|
+
fileType: file.type,
|
|
930
|
+
file: file
|
|
931
|
+
};
|
|
932
|
+
});
|
|
933
|
+
setUploadedFiles(function(prev) {
|
|
934
|
+
return _to_consumable_array(prev).concat(_to_consumable_array(newFiles));
|
|
935
|
+
});
|
|
936
|
+
setUploading(false);
|
|
937
|
+
return [
|
|
938
|
+
2
|
|
939
|
+
];
|
|
940
|
+
}
|
|
941
|
+
});
|
|
942
|
+
})();
|
|
943
|
+
};
|
|
944
|
+
var handleRemove = function(fileKey) {
|
|
945
|
+
setUploadedFiles(function(prev) {
|
|
946
|
+
return prev.filter(function(file) {
|
|
947
|
+
return file.fileKey !== fileKey;
|
|
948
|
+
});
|
|
949
|
+
});
|
|
950
|
+
};
|
|
951
|
+
return /*#__PURE__*/ _jsx(Box, {
|
|
952
|
+
maxInlineSize: "500px",
|
|
953
|
+
children: /*#__PURE__*/ _jsxs(Card, {
|
|
954
|
+
title: "Marketing Assets Upload",
|
|
955
|
+
padded: true,
|
|
956
|
+
children: [
|
|
957
|
+
/*#__PURE__*/ _jsx(DropZone, {
|
|
958
|
+
label: "Brand Assets",
|
|
959
|
+
type: "image",
|
|
960
|
+
allowMultiple: true,
|
|
961
|
+
helpText: "Upload your brand logos, banners, and marketing materials. Accepted formats: PNG, JPG, SVG.",
|
|
962
|
+
accept: [
|
|
963
|
+
'image/png',
|
|
964
|
+
'image/jpeg',
|
|
965
|
+
'image/svg+xml'
|
|
966
|
+
],
|
|
967
|
+
uploadLabel: "\uD83D\uDCC1 Drop your brand assets here or click to select files",
|
|
968
|
+
uploadingLabel: "\uD83D\uDE80 Processing your assets...",
|
|
969
|
+
dragLabel: "✨ Release to add these awesome files",
|
|
970
|
+
uploading: uploading,
|
|
971
|
+
uploadedFiles: uploadedFiles,
|
|
972
|
+
onDropAccepted: handleDrop,
|
|
973
|
+
onRemove: handleRemove
|
|
974
|
+
}),
|
|
975
|
+
uploadedFiles.length > 0 && /*#__PURE__*/ _jsx(Box, {
|
|
976
|
+
paddingBlockStart: "6",
|
|
977
|
+
padding: "4",
|
|
978
|
+
background: "success",
|
|
979
|
+
borderRadius: "default",
|
|
980
|
+
children: /*#__PURE__*/ _jsxs(VerticalStack, {
|
|
981
|
+
gap: "2",
|
|
982
|
+
children: [
|
|
983
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
984
|
+
variant: "headingSm",
|
|
985
|
+
color: "success",
|
|
986
|
+
children: "\uD83D\uDCCB Asset Summary"
|
|
987
|
+
}),
|
|
988
|
+
/*#__PURE__*/ _jsxs(Text, {
|
|
989
|
+
variant: "bodySm",
|
|
990
|
+
color: "success",
|
|
991
|
+
children: [
|
|
992
|
+
uploadedFiles.length,
|
|
993
|
+
" brand asset",
|
|
994
|
+
uploadedFiles.length !== 1 ? 's' : '',
|
|
995
|
+
" ready for use"
|
|
996
|
+
]
|
|
997
|
+
})
|
|
998
|
+
]
|
|
999
|
+
})
|
|
1000
|
+
})
|
|
1001
|
+
]
|
|
1002
|
+
})
|
|
1003
|
+
});
|
|
1004
|
+
},
|
|
1005
|
+
parameters: {
|
|
1006
|
+
docs: {
|
|
1007
|
+
description: {
|
|
1008
|
+
story: 'DropZone with custom labels and messages for better user experience.'
|
|
1009
|
+
},
|
|
1010
|
+
source: {
|
|
1011
|
+
transform: transformStorySource
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
};
|
|
1016
|
+
export var FilePreviewInteractions = {
|
|
1017
|
+
render: function() {
|
|
1018
|
+
var _useState = _sliced_to_array(useState([
|
|
1019
|
+
{
|
|
1020
|
+
fileKey: 'demo-1',
|
|
1021
|
+
fileName: 'project-overview.pdf',
|
|
1022
|
+
fileSize: 2048000,
|
|
1023
|
+
fileType: 'application/pdf'
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
fileKey: 'demo-2',
|
|
1027
|
+
fileName: 'budget-analysis.xlsx',
|
|
1028
|
+
fileSize: 1536000,
|
|
1029
|
+
fileType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
|
1030
|
+
},
|
|
1031
|
+
{
|
|
1032
|
+
fileKey: 'demo-3',
|
|
1033
|
+
fileName: 'team-photo.jpg',
|
|
1034
|
+
fileSize: 3072000,
|
|
1035
|
+
fileType: 'image/jpeg',
|
|
1036
|
+
url: 'https://via.placeholder.com/150x150/3498db/ffffff?text=Team'
|
|
1037
|
+
}
|
|
1038
|
+
]), 2), uploadedFiles = _useState[0], setUploadedFiles = _useState[1];
|
|
1039
|
+
var _useState1 = _sliced_to_array(useState(null), 2), selectedFile = _useState1[0], setSelectedFile = _useState1[1];
|
|
1040
|
+
var handleFileClick = function(file) {
|
|
1041
|
+
setSelectedFile(file);
|
|
1042
|
+
};
|
|
1043
|
+
var handleRemove = function(fileKey) {
|
|
1044
|
+
setUploadedFiles(function(prev) {
|
|
1045
|
+
return prev.filter(function(file) {
|
|
1046
|
+
return file.fileKey !== fileKey;
|
|
1047
|
+
});
|
|
1048
|
+
});
|
|
1049
|
+
if ((selectedFile === null || selectedFile === void 0 ? void 0 : selectedFile.fileKey) === fileKey) {
|
|
1050
|
+
setSelectedFile(null);
|
|
1051
|
+
}
|
|
1052
|
+
};
|
|
1053
|
+
return /*#__PURE__*/ _jsxs(HorizontalStack, {
|
|
1054
|
+
gap: "8",
|
|
1055
|
+
children: [
|
|
1056
|
+
/*#__PURE__*/ _jsx(Box, {
|
|
1057
|
+
maxInlineSize: "400px",
|
|
1058
|
+
children: /*#__PURE__*/ _jsx(Card, {
|
|
1059
|
+
title: "Project Files",
|
|
1060
|
+
padded: true,
|
|
1061
|
+
children: /*#__PURE__*/ _jsx(DropZone, {
|
|
1062
|
+
label: "Upload Project Files",
|
|
1063
|
+
allowMultiple: true,
|
|
1064
|
+
helpText: "Click on any file preview to view details.",
|
|
1065
|
+
uploadedFiles: uploadedFiles,
|
|
1066
|
+
onRemove: handleRemove,
|
|
1067
|
+
onFilePreviewClick: handleFileClick
|
|
1068
|
+
})
|
|
1069
|
+
})
|
|
1070
|
+
}),
|
|
1071
|
+
/*#__PURE__*/ _jsx(Box, {
|
|
1072
|
+
maxInlineSize: "300px",
|
|
1073
|
+
children: /*#__PURE__*/ _jsx(Card, {
|
|
1074
|
+
title: "File Details",
|
|
1075
|
+
padded: true,
|
|
1076
|
+
children: selectedFile ? /*#__PURE__*/ _jsxs(VerticalStack, {
|
|
1077
|
+
gap: "4",
|
|
1078
|
+
children: [
|
|
1079
|
+
/*#__PURE__*/ _jsxs(Text, {
|
|
1080
|
+
variant: "headingSm",
|
|
1081
|
+
children: [
|
|
1082
|
+
"\uD83D\uDCC4 ",
|
|
1083
|
+
selectedFile.fileName
|
|
1084
|
+
]
|
|
1085
|
+
}),
|
|
1086
|
+
/*#__PURE__*/ _jsxs(VerticalStack, {
|
|
1087
|
+
gap: "2",
|
|
1088
|
+
children: [
|
|
1089
|
+
/*#__PURE__*/ _jsxs(HorizontalStack, {
|
|
1090
|
+
children: [
|
|
1091
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
1092
|
+
variant: "bodySm",
|
|
1093
|
+
fontWeight: "semibold",
|
|
1094
|
+
children: "Size:"
|
|
1095
|
+
}),
|
|
1096
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
1097
|
+
variant: "bodySm",
|
|
1098
|
+
children: DropZone.formatFileSize(selectedFile.fileSize)
|
|
1099
|
+
})
|
|
1100
|
+
]
|
|
1101
|
+
}),
|
|
1102
|
+
/*#__PURE__*/ _jsxs(HorizontalStack, {
|
|
1103
|
+
children: [
|
|
1104
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
1105
|
+
variant: "bodySm",
|
|
1106
|
+
fontWeight: "semibold",
|
|
1107
|
+
children: "Type:"
|
|
1108
|
+
}),
|
|
1109
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
1110
|
+
variant: "bodySm",
|
|
1111
|
+
children: selectedFile.fileType
|
|
1112
|
+
})
|
|
1113
|
+
]
|
|
1114
|
+
}),
|
|
1115
|
+
/*#__PURE__*/ _jsxs(HorizontalStack, {
|
|
1116
|
+
children: [
|
|
1117
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
1118
|
+
variant: "bodySm",
|
|
1119
|
+
fontWeight: "semibold",
|
|
1120
|
+
children: "Key:"
|
|
1121
|
+
}),
|
|
1122
|
+
/*#__PURE__*/ _jsx(Text, {
|
|
1123
|
+
variant: "bodySm",
|
|
1124
|
+
children: selectedFile.fileKey
|
|
1125
|
+
})
|
|
1126
|
+
]
|
|
1127
|
+
}),
|
|
1128
|
+
selectedFile.url && /*#__PURE__*/ _jsx(Box, {
|
|
1129
|
+
paddingBlockStart: "4",
|
|
1130
|
+
children: /*#__PURE__*/ _jsx("img", {
|
|
1131
|
+
src: selectedFile.url,
|
|
1132
|
+
alt: selectedFile.fileName,
|
|
1133
|
+
style: {
|
|
1134
|
+
width: '100%',
|
|
1135
|
+
borderRadius: '4px'
|
|
1136
|
+
}
|
|
1137
|
+
})
|
|
1138
|
+
})
|
|
1139
|
+
]
|
|
1140
|
+
})
|
|
1141
|
+
]
|
|
1142
|
+
}) : /*#__PURE__*/ _jsx(Text, {
|
|
1143
|
+
color: "subdued",
|
|
1144
|
+
children: "Click on a file in the list to view its details here."
|
|
1145
|
+
})
|
|
1146
|
+
})
|
|
1147
|
+
})
|
|
1148
|
+
]
|
|
1149
|
+
});
|
|
1150
|
+
},
|
|
1151
|
+
parameters: {
|
|
1152
|
+
docs: {
|
|
1153
|
+
description: {
|
|
1154
|
+
story: 'Interactive file previews with click handlers for detailed file information.'
|
|
1155
|
+
},
|
|
1156
|
+
source: {
|
|
1157
|
+
transform: transformStorySource
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
};
|