@powerhousedao/design-system 5.0.0-staging.15 → 5.0.0-staging.16
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/src/connect/components/drop-zone/drop-zone.d.ts.map +1 -1
- package/dist/src/connect/components/drop-zone/drop-zone.js +36 -2
- package/dist/src/connect/components/drop-zone/drop-zone.js.map +1 -1
- package/dist/src/connect/components/drop-zone/upload-file-list-container.d.ts +1 -0
- package/dist/src/connect/components/drop-zone/upload-file-list-container.d.ts.map +1 -1
- package/dist/src/connect/components/drop-zone/upload-file-list-container.js +2 -2
- package/dist/src/connect/components/drop-zone/upload-file-list-container.js.map +1 -1
- package/dist/src/connect/components/drop-zone/use-upload-tracker.d.ts +3 -0
- package/dist/src/connect/components/drop-zone/use-upload-tracker.d.ts.map +1 -1
- package/dist/src/connect/components/drop-zone/use-upload-tracker.js +85 -0
- package/dist/src/connect/components/drop-zone/use-upload-tracker.js.map +1 -1
- package/dist/src/connect/components/drop-zone/utils.d.ts +7 -4
- package/dist/src/connect/components/drop-zone/utils.d.ts.map +1 -1
- package/dist/src/connect/components/drop-zone/utils.js +9 -2
- package/dist/src/connect/components/drop-zone/utils.js.map +1 -1
- package/dist/src/connect/components/modal/index.d.ts +1 -0
- package/dist/src/connect/components/modal/index.d.ts.map +1 -1
- package/dist/src/connect/components/modal/index.js +1 -0
- package/dist/src/connect/components/modal/index.js.map +1 -1
- package/dist/src/connect/components/modal/replace-duplicate-modal.d.ts +22 -0
- package/dist/src/connect/components/modal/replace-duplicate-modal.d.ts.map +1 -0
- package/dist/src/connect/components/modal/replace-duplicate-modal.js +18 -0
- package/dist/src/connect/components/modal/replace-duplicate-modal.js.map +1 -0
- package/dist/src/connect/components/upload-file-item/components/status-row.d.ts.map +1 -1
- package/dist/src/connect/components/upload-file-item/components/status-row.js +9 -2
- package/dist/src/connect/components/upload-file-item/components/status-row.js.map +1 -1
- package/dist/src/connect/components/upload-file-item/upload-file-item.d.ts +2 -2
- package/dist/src/connect/components/upload-file-item/upload-file-item.d.ts.map +1 -1
- package/dist/src/connect/components/upload-file-item/upload-file-item.js.map +1 -1
- package/dist/style.css +14 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop-zone.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/drop-zone.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"drop-zone.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/drop-zone.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAMf,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,CACpB,GAAG,EAAE,IAAI,EACT,MAAM,EAAE,IAAI,GAAG,SAAS,KACrB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,CACpB,GAAG,EAAE,IAAI,EACT,MAAM,EAAE,IAAI,GAAG,SAAS,KACrB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,cAAc,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,KACtC,IAAI,CAAC;IACV,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CA8H5C"}
|
|
@@ -1,15 +1,47 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Icon } from "#powerhouse";
|
|
3
|
+
import { useEffect, useState, } from "react";
|
|
3
4
|
import { twMerge } from "tailwind-merge";
|
|
4
5
|
import { useDrop } from "../../hooks/drag-and-drop/use-drop.js";
|
|
6
|
+
import { ConnectReplaceDuplicateModal } from "../modal/replace-duplicate-modal.js";
|
|
5
7
|
import { UploadFileListContainer } from "./upload-file-list-container.js";
|
|
6
8
|
import { useUploadTracker } from "./use-upload-tracker.js";
|
|
7
9
|
export function DropZone(props) {
|
|
8
10
|
const { title = "Drag your documents", subtitle = "to drop them in the currently selected folder.", node, enable = true, children, onAddFile, onMoveNode, onCopyNode, setSelectedNode, useLocalStorage = false, driveId, className, ...delegatedProps } = props;
|
|
11
|
+
// Modal state for conflict resolution
|
|
12
|
+
const [modalOpen, setModalOpen] = useState(false);
|
|
13
|
+
const [conflictUploadId, setConflictUploadId] = useState(null);
|
|
9
14
|
// Upload tracking with the new hook
|
|
10
|
-
const { uploadsArray, uploadsCount, createUploadHandler, clearAllUploads, removeUpload, } = useUploadTracker(useLocalStorage, driveId);
|
|
15
|
+
const { uploadsArray, uploadsCount, createUploadHandler, clearAllUploads, clearConflictedUploads, removeUpload, resolveConflict, } = useUploadTracker(useLocalStorage, driveId);
|
|
16
|
+
// Clear conflicted uploads on mount
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
clearConflictedUploads();
|
|
19
|
+
}, []);
|
|
11
20
|
// Create the upload handler from the hook
|
|
12
21
|
const handleAddFile = createUploadHandler(onAddFile) ?? (async () => { });
|
|
22
|
+
// Handle conflict resolution modal
|
|
23
|
+
const handleConflictResolution = (uploadId) => {
|
|
24
|
+
setConflictUploadId(uploadId);
|
|
25
|
+
setModalOpen(true);
|
|
26
|
+
};
|
|
27
|
+
const handleReplace = () => {
|
|
28
|
+
if (conflictUploadId && onAddFile) {
|
|
29
|
+
resolveConflict(conflictUploadId, "replace", onAddFile);
|
|
30
|
+
}
|
|
31
|
+
setModalOpen(false);
|
|
32
|
+
setConflictUploadId(null);
|
|
33
|
+
};
|
|
34
|
+
const handleDuplicate = () => {
|
|
35
|
+
if (conflictUploadId && onAddFile) {
|
|
36
|
+
resolveConflict(conflictUploadId, "duplicate", onAddFile);
|
|
37
|
+
}
|
|
38
|
+
setModalOpen(false);
|
|
39
|
+
setConflictUploadId(null);
|
|
40
|
+
};
|
|
41
|
+
const handleModalClose = () => {
|
|
42
|
+
setModalOpen(false);
|
|
43
|
+
setConflictUploadId(null);
|
|
44
|
+
};
|
|
13
45
|
const { isDropTarget, dropProps } = useDrop({
|
|
14
46
|
node,
|
|
15
47
|
onAddFile: handleAddFile,
|
|
@@ -17,6 +49,8 @@ export function DropZone(props) {
|
|
|
17
49
|
onCopyNode: onCopyNode ?? (async () => { }),
|
|
18
50
|
trackNestedDrag: true,
|
|
19
51
|
});
|
|
20
|
-
return (_jsxs("div", { className: twMerge("relative", className), ...(enable ? dropProps : {}), ...delegatedProps, children: [children, enable && isDropTarget && (_jsx("div", { className: "fixed inset-0 z-[1000] flex min-h-screen w-screen items-center justify-center bg-black/50", children: _jsx("div", { className: "rounded-[24px] bg-white p-6 shadow-[1px_4px_15px_rgba(74,88,115,0.25)]", children: _jsxs("div", { className: "relative flex h-[130px] w-[400px] flex-col items-center justify-start overflow-visible rounded-lg border border-dashed border-black px-4 py-6", children: [_jsx("div", { className: "text-center text-base leading-5 text-zinc-500", children: title }), _jsx("div", { className: "text-center text-base leading-5 text-zinc-500", children: subtitle }), _jsx("span", { className: "pointer-events-none absolute -bottom-16 left-1/2 z-10 -translate-x-1/2", children: _jsx(Icon, { name: "DocumentIcons", size: 144, "aria-hidden": "true" }) })] }) }) })), _jsx(UploadFileListContainer, { uploadsArray: uploadsArray, uploadsCount: uploadsCount, removeUpload: removeUpload, clearAllUploads: clearAllUploads, setSelectedNode: setSelectedNode })
|
|
52
|
+
return (_jsxs("div", { className: twMerge("relative", className), ...(enable ? dropProps : {}), ...delegatedProps, children: [children, enable && isDropTarget && (_jsx("div", { className: "fixed inset-0 z-[1000] flex min-h-screen w-screen items-center justify-center bg-black/50", children: _jsx("div", { className: "rounded-[24px] bg-white p-6 shadow-[1px_4px_15px_rgba(74,88,115,0.25)]", children: _jsxs("div", { className: "relative flex h-[130px] w-[400px] flex-col items-center justify-start overflow-visible rounded-lg border border-dashed border-black px-4 py-6", children: [_jsx("div", { className: "text-center text-base leading-5 text-zinc-500", children: title }), _jsx("div", { className: "text-center text-base leading-5 text-zinc-500", children: subtitle }), _jsx("span", { className: "pointer-events-none absolute -bottom-16 left-1/2 z-10 -translate-x-1/2", children: _jsx(Icon, { name: "DocumentIcons", size: 144, "aria-hidden": "true" }) })] }) }) })), _jsx(UploadFileListContainer, { uploadsArray: uploadsArray, uploadsCount: uploadsCount, removeUpload: removeUpload, clearAllUploads: clearAllUploads, setSelectedNode: setSelectedNode, onConflictResolution: handleConflictResolution }), _jsx(ConnectReplaceDuplicateModal, { open: modalOpen, onOpenChange: handleModalClose, fileName: conflictUploadId
|
|
53
|
+
? uploadsArray.find((u) => u?.id === conflictUploadId)?.fileName
|
|
54
|
+
: undefined, onReplace: handleReplace, onDuplicate: handleDuplicate })] }));
|
|
21
55
|
}
|
|
22
56
|
//# sourceMappingURL=drop-zone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop-zone.js","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/drop-zone.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"drop-zone.js","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/drop-zone.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export type UploadFileListContainerProps = ComponentPropsWithoutRef<"div"> & {
|
|
|
8
8
|
readonly clearAllUploads: () => void;
|
|
9
9
|
readonly setSelectedNode?: (nodeOrNodeSlug: Node | string | undefined) => void;
|
|
10
10
|
readonly onClose?: () => void;
|
|
11
|
+
readonly onConflictResolution?: (uploadId: string) => void;
|
|
11
12
|
};
|
|
12
13
|
export declare function UploadFileListContainer(props: UploadFileListContainerProps): import("react/jsx-runtime").JSX.Element | null;
|
|
13
14
|
//# sourceMappingURL=upload-file-list-container.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-file-list-container.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/upload-file-list-container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,MAAM,4BAA4B,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG;IAC3E,QAAQ,CAAC,YAAY,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,cAAc,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,KACtC,IAAI,CAAC;IACV,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"upload-file-list-container.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/upload-file-list-container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,MAAM,4BAA4B,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG;IAC3E,QAAQ,CAAC,YAAY,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,cAAc,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,KACtC,IAAI,CAAC;IACV,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5D,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,kDAiC1E"}
|
|
@@ -3,11 +3,11 @@ import { twMerge } from "tailwind-merge";
|
|
|
3
3
|
import { UploadFileList } from "../upload-file-list/index.js";
|
|
4
4
|
import { mapUploadsToFileItems } from "./utils.js";
|
|
5
5
|
export function UploadFileListContainer(props) {
|
|
6
|
-
const { uploadsArray, uploadsCount, removeUpload, clearAllUploads, setSelectedNode, onClose, className, ...delegatedProps } = props;
|
|
6
|
+
const { uploadsArray, uploadsCount, removeUpload, clearAllUploads, setSelectedNode, onClose, onConflictResolution, className, ...delegatedProps } = props;
|
|
7
7
|
// Don't render if there are no uploads
|
|
8
8
|
if (uploadsCount === 0)
|
|
9
9
|
return null;
|
|
10
|
-
const items = mapUploadsToFileItems(uploadsArray, removeUpload, setSelectedNode);
|
|
10
|
+
const items = mapUploadsToFileItems(uploadsArray, removeUpload, setSelectedNode, onConflictResolution);
|
|
11
11
|
const handleClose = onClose ?? clearAllUploads;
|
|
12
12
|
return (_jsx("div", { className: twMerge("fixed bottom-4 right-4 z-[1001]", className), ...delegatedProps, children: _jsx(UploadFileList, { items: items, onClose: handleClose }) }));
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-file-list-container.js","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/upload-file-list-container.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAsB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"upload-file-list-container.js","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/upload-file-list-container.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAsB,MAAM,YAAY,CAAC;AAcvE,MAAM,UAAU,uBAAuB,CAAC,KAAmC;IACzE,MAAM,EACJ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,OAAO,EACP,oBAAoB,EACpB,SAAS,EACT,GAAG,cAAc,EAClB,GAAG,KAAK,CAAC;IAEV,uCAAuC;IACvC,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,KAAK,GAAG,qBAAqB,CACjC,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,oBAAoB,CACrB,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,IAAI,eAAe,CAAC;IAE/C,OAAO,CACL,cACE,SAAS,EAAE,OAAO,CAAC,iCAAiC,EAAE,SAAS,CAAC,KAC5D,cAAc,YAElB,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,GAAI,GAClD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ConflictResolution } from "@powerhousedao/reactor-browser";
|
|
1
2
|
import type { Node } from "document-drive";
|
|
2
3
|
import { type OnAddFileWithProgress, type UploadTracker } from "./utils.js";
|
|
3
4
|
type UploadsState = {
|
|
@@ -10,6 +11,8 @@ export declare function useUploadTracker(useLocalStorage?: boolean, driveId?: st
|
|
|
10
11
|
createUploadHandler: (onAddFile?: OnAddFileWithProgress) => ((file: File, parent: Node | undefined) => Promise<void>) | undefined;
|
|
11
12
|
removeUpload: (uploadId: string) => void;
|
|
12
13
|
clearAllUploads: () => void;
|
|
14
|
+
clearConflictedUploads: () => void;
|
|
15
|
+
resolveConflict: (uploadId: string, resolution: ConflictResolution, onAddFile?: OnAddFileWithProgress) => void;
|
|
13
16
|
};
|
|
14
17
|
export {};
|
|
15
18
|
//# sourceMappingURL=use-upload-tracker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-upload-tracker.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/use-upload-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-upload-tracker.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/use-upload-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAInB,MAAM,YAAY,CAAC;AAGpB,KAAK,YAAY,GAAG;IAClB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;CAC/C,CAAC;AAoKF,wBAAgB,gBAAgB,CAAC,eAAe,UAAQ,EAAE,OAAO,CAAC,EAAE,MAAM;;;;sCAsCzD,qBAAqB,aAGZ,IAAI,UAAU,IAAI,GAAG,SAAS;6BA8DV,MAAM;;;gCA+BpC,MAAM,cACJ,kBAAkB,cAClB,qBAAqB;EAgEtC"}
|
|
@@ -30,6 +30,10 @@ function uploadsReducer(state, action) {
|
|
|
30
30
|
...(action.payload.progress.documentType && {
|
|
31
31
|
documentType: action.payload.progress.documentType,
|
|
32
32
|
}),
|
|
33
|
+
// Update duplicateType if provided (for conflicts)
|
|
34
|
+
...(action.payload.progress.duplicateType && {
|
|
35
|
+
duplicateType: action.payload.progress.duplicateType,
|
|
36
|
+
}),
|
|
33
37
|
},
|
|
34
38
|
};
|
|
35
39
|
}
|
|
@@ -66,6 +70,29 @@ function uploadsReducer(state, action) {
|
|
|
66
70
|
case "CLEAR_ALL_UPLOADS": {
|
|
67
71
|
return {};
|
|
68
72
|
}
|
|
73
|
+
case "SET_CONFLICT_DATA": {
|
|
74
|
+
const conflictUpload = state[action.payload.id];
|
|
75
|
+
if (!conflictUpload)
|
|
76
|
+
return state;
|
|
77
|
+
return {
|
|
78
|
+
...state,
|
|
79
|
+
[action.payload.id]: {
|
|
80
|
+
...conflictUpload,
|
|
81
|
+
file: action.payload.file,
|
|
82
|
+
parentNode: action.payload.parentNode,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
case "CLEAR_CONFLICTED_UPLOADS": {
|
|
87
|
+
// Filter out all uploads with status "conflict"
|
|
88
|
+
const filteredUploads = {};
|
|
89
|
+
for (const [id, upload] of Object.entries(state)) {
|
|
90
|
+
if (upload && upload.status !== "conflict") {
|
|
91
|
+
filteredUploads[id] = upload;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return filteredUploads;
|
|
95
|
+
}
|
|
69
96
|
default:
|
|
70
97
|
return state;
|
|
71
98
|
}
|
|
@@ -124,6 +151,17 @@ export function useUploadTracker(useLocalStorage = false, driveId) {
|
|
|
124
151
|
progress,
|
|
125
152
|
},
|
|
126
153
|
});
|
|
154
|
+
// Store file and parent data when conflict is detected
|
|
155
|
+
if (progress.stage === "conflict") {
|
|
156
|
+
dispatch({
|
|
157
|
+
type: "SET_CONFLICT_DATA",
|
|
158
|
+
payload: {
|
|
159
|
+
id: fileId,
|
|
160
|
+
file,
|
|
161
|
+
parentNode: parent,
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
}
|
|
127
165
|
};
|
|
128
166
|
try {
|
|
129
167
|
// Call the original onAddFile with our progress callback
|
|
@@ -161,12 +199,57 @@ export function useUploadTracker(useLocalStorage = false, driveId) {
|
|
|
161
199
|
type: "CLEAR_ALL_UPLOADS",
|
|
162
200
|
});
|
|
163
201
|
}, []);
|
|
202
|
+
const clearConflictedUploads = useCallback(() => {
|
|
203
|
+
dispatch({
|
|
204
|
+
type: "CLEAR_CONFLICTED_UPLOADS",
|
|
205
|
+
});
|
|
206
|
+
}, []);
|
|
164
207
|
const getUploadsArray = useCallback(() => {
|
|
165
208
|
return Object.values(uploads);
|
|
166
209
|
}, [uploads]);
|
|
167
210
|
const getUploadsCount = useCallback(() => {
|
|
168
211
|
return Object.keys(uploads).length;
|
|
169
212
|
}, [uploads]);
|
|
213
|
+
const resolveConflict = useCallback((uploadId, resolution, onAddFile) => {
|
|
214
|
+
const upload = uploads[uploadId];
|
|
215
|
+
if (!upload?.file || !onAddFile) {
|
|
216
|
+
console.error("Cannot resolve conflict: missing upload data or onAddFile function");
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
// Re-call onAddFile with the conflict resolution
|
|
220
|
+
const progressCallback = (progress) => {
|
|
221
|
+
dispatch({
|
|
222
|
+
type: "UPDATE_PROGRESS",
|
|
223
|
+
payload: {
|
|
224
|
+
id: uploadId,
|
|
225
|
+
progress,
|
|
226
|
+
},
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
const result = onAddFile(upload.file, upload.parentNode, progressCallback, resolution);
|
|
230
|
+
// Handle both Promise and direct return values
|
|
231
|
+
Promise.resolve(result)
|
|
232
|
+
.then((fileNode) => {
|
|
233
|
+
if (fileNode) {
|
|
234
|
+
dispatch({
|
|
235
|
+
type: "SET_FILE_NODE",
|
|
236
|
+
payload: {
|
|
237
|
+
id: uploadId,
|
|
238
|
+
fileNode,
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
})
|
|
243
|
+
.catch((error) => {
|
|
244
|
+
dispatch({
|
|
245
|
+
type: "SET_ERROR",
|
|
246
|
+
payload: {
|
|
247
|
+
id: uploadId,
|
|
248
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
249
|
+
},
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
}, [uploads]);
|
|
170
253
|
return {
|
|
171
254
|
uploads,
|
|
172
255
|
uploadsArray: getUploadsArray(),
|
|
@@ -174,6 +257,8 @@ export function useUploadTracker(useLocalStorage = false, driveId) {
|
|
|
174
257
|
createUploadHandler,
|
|
175
258
|
removeUpload,
|
|
176
259
|
clearAllUploads,
|
|
260
|
+
clearConflictedUploads,
|
|
261
|
+
resolveConflict,
|
|
177
262
|
};
|
|
178
263
|
}
|
|
179
264
|
//# sourceMappingURL=use-upload-tracker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-upload-tracker.js","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/use-upload-tracker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-upload-tracker.js","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/use-upload-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
import type { DocumentTypeIcon, FileUploadProgress } from "@powerhousedao/reactor-browser";
|
|
1
|
+
import type { ConflictResolution, DocumentTypeIcon, FileUploadProgress } from "@powerhousedao/reactor-browser";
|
|
2
2
|
import type { Node } from "document-drive";
|
|
3
3
|
import type { UploadFileItemProps } from "../upload-file-item/index.js";
|
|
4
4
|
export type UploadTracker = {
|
|
5
5
|
id: string;
|
|
6
6
|
fileName: string;
|
|
7
7
|
fileSize: string;
|
|
8
|
-
status: "pending" | "uploading" | "success" | "failed";
|
|
8
|
+
status: "pending" | "uploading" | "success" | "failed" | "conflict";
|
|
9
9
|
progress: number;
|
|
10
10
|
errorDetails?: string;
|
|
11
11
|
fileNode?: Node;
|
|
12
12
|
documentType?: DocumentTypeIcon;
|
|
13
|
+
file?: File;
|
|
14
|
+
parentNode?: Node;
|
|
15
|
+
duplicateType?: "id" | "name";
|
|
13
16
|
};
|
|
14
|
-
export type OnAddFileWithProgress = (file: File, parent: Node | undefined, onProgress?: (progress: FileUploadProgress) => void) => Promise<Node | undefined> | Node | undefined;
|
|
17
|
+
export type OnAddFileWithProgress = (file: File, parent: Node | undefined, onProgress?: (progress: FileUploadProgress) => void, resolveConflict?: ConflictResolution) => Promise<Node | undefined> | Node | undefined;
|
|
15
18
|
export declare function generateId(): string;
|
|
16
19
|
export declare function formatFileSize(bytes: number): string;
|
|
17
20
|
export declare function mapProgressStageToStatus(stage: FileUploadProgress["stage"]): UploadTracker["status"];
|
|
18
|
-
export declare function mapUploadsToFileItems(uploadsArray: (UploadTracker | undefined)[], removeUpload: (uploadId: string) => void, setSelectedNodeFn?: (nodeOrNodeSlug: Node | string | undefined) => void): UploadFileItemProps[];
|
|
21
|
+
export declare function mapUploadsToFileItems(uploadsArray: (UploadTracker | undefined)[], removeUpload: (uploadId: string) => void, setSelectedNodeFn?: (nodeOrNodeSlug: Node | string | undefined) => void, onConflictResolution?: (uploadId: string) => void): UploadFileItemProps[];
|
|
19
22
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAEhC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,aAAa,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAClC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,IAAI,GAAG,SAAS,EACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,EACnD,eAAe,CAAC,EAAE,kBAAkB,KACjC,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAGlD,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GACjC,aAAa,CAAC,QAAQ,CAAC,CAgBzB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC,EAAE,EAC3C,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EACxC,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,KAAK,IAAI,EACvE,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAChD,mBAAmB,EAAE,CA4CvB"}
|
|
@@ -21,11 +21,13 @@ export function mapProgressStageToStatus(stage) {
|
|
|
21
21
|
return "success";
|
|
22
22
|
case "failed":
|
|
23
23
|
return "failed";
|
|
24
|
+
case "conflict":
|
|
25
|
+
return "conflict";
|
|
24
26
|
default:
|
|
25
27
|
return "pending";
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
|
-
export function mapUploadsToFileItems(uploadsArray, removeUpload, setSelectedNodeFn) {
|
|
30
|
+
export function mapUploadsToFileItems(uploadsArray, removeUpload, setSelectedNodeFn, onConflictResolution) {
|
|
29
31
|
return uploadsArray
|
|
30
32
|
.filter((upload) => upload !== undefined)
|
|
31
33
|
.map((upload) => ({
|
|
@@ -52,7 +54,12 @@ export function mapUploadsToFileItems(uploadsArray, removeUpload, setSelectedNod
|
|
|
52
54
|
? () => {
|
|
53
55
|
console.log("Finding resolution for upload:", upload.id);
|
|
54
56
|
}
|
|
55
|
-
:
|
|
57
|
+
: upload.status === "conflict"
|
|
58
|
+
? () => {
|
|
59
|
+
console.log("Finding conflict resolution for upload:", upload.id);
|
|
60
|
+
onConflictResolution?.(upload.id);
|
|
61
|
+
}
|
|
62
|
+
: undefined,
|
|
56
63
|
}));
|
|
57
64
|
}
|
|
58
65
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/connect/components/drop-zone/utils.ts"],"names":[],"mappings":"AA+BA,oBAAoB;AACpB,MAAM,UAAU,UAAU;IACxB,OAAO,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,GAAG,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAkC;IAElC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,cAAc;YACjB,OAAO,SAAS,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,YAA2C,EAC3C,YAAwC,EACxC,iBAAuE,EACvE,oBAAiD;IAEjD,OAAO,YAAY;SAChB,MAAM,CACL,CAAC,MAAM,EAAwC,EAAE,CAAC,MAAM,KAAK,SAAS,CACvE;SACA,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,OAAO,EAAE,GAAG,EAAE;YACZ,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;QACD,cAAc,EACZ,MAAM,CAAC,MAAM,KAAK,SAAS;YACzB,CAAC,CAAC,GAAG,EAAE;gBACH,IAAI,MAAM,CAAC,QAAQ,IAAI,iBAAiB,EAAE,CAAC;oBACzC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CACX,8BAA8B,EAC9B,MAAM,CAAC,EAAE,EACT,0DAA0D,CAC3D,CAAC;gBACJ,CAAC;YACH,CAAC;YACH,CAAC,CAAC,SAAS;QACf,gBAAgB,EACd,MAAM,CAAC,MAAM,KAAK,QAAQ;YACxB,CAAC,CAAC,GAAG,EAAE;gBACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAC3D,CAAC;YACH,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;gBAC5B,CAAC,CAAC,GAAG,EAAE;oBACH,OAAO,CAAC,GAAG,CACT,yCAAyC,EACzC,MAAM,CAAC,EAAE,CACV,CAAC;oBACF,oBAAoB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACpC,CAAC;gBACH,CAAC,CAAC,SAAS;KAClB,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -7,6 +7,7 @@ export * from "./delete-drive-modal.js";
|
|
|
7
7
|
export * from "./delete-item-modal.js";
|
|
8
8
|
export * from "./drive-settings-modal.js";
|
|
9
9
|
export * from "./read-required-modal.js";
|
|
10
|
+
export * from "./replace-duplicate-modal.js";
|
|
10
11
|
export * from "./settings-modal/index.js";
|
|
11
12
|
export * from "./settings-modal-v2/index.js";
|
|
12
13
|
export * from "./upgrade-drive-modal.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/modal/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/modal/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC"}
|
|
@@ -7,6 +7,7 @@ export * from "./delete-drive-modal.js";
|
|
|
7
7
|
export * from "./delete-item-modal.js";
|
|
8
8
|
export * from "./drive-settings-modal.js";
|
|
9
9
|
export * from "./read-required-modal.js";
|
|
10
|
+
export * from "./replace-duplicate-modal.js";
|
|
10
11
|
export * from "./settings-modal/index.js";
|
|
11
12
|
export * from "./settings-modal-v2/index.js";
|
|
12
13
|
export * from "./upgrade-drive-modal.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/connect/components/modal/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/connect/components/modal/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { DivProps } from "#powerhouse";
|
|
2
|
+
import { Modal } from "#powerhouse";
|
|
3
|
+
import type { ComponentPropsWithoutRef } from "react";
|
|
4
|
+
type ButtonProps = ComponentPropsWithoutRef<"button">;
|
|
5
|
+
export type ConnectReplaceDuplicateModalProps = ComponentPropsWithoutRef<typeof Modal> & {
|
|
6
|
+
readonly title?: string;
|
|
7
|
+
readonly fileName?: string;
|
|
8
|
+
readonly message?: string;
|
|
9
|
+
readonly onReplace: () => void;
|
|
10
|
+
readonly onDuplicate: () => void;
|
|
11
|
+
readonly replaceLabel?: string;
|
|
12
|
+
readonly duplicateLabel?: string;
|
|
13
|
+
readonly bodyProps?: DivProps;
|
|
14
|
+
readonly replaceButtonProps?: ButtonProps;
|
|
15
|
+
readonly duplicateButtonProps?: ButtonProps;
|
|
16
|
+
readonly headerProps?: DivProps;
|
|
17
|
+
readonly buttonContainerProps?: DivProps;
|
|
18
|
+
readonly containerProps?: DivProps;
|
|
19
|
+
};
|
|
20
|
+
export declare function ConnectReplaceDuplicateModal(props: ConnectReplaceDuplicateModalProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=replace-duplicate-modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace-duplicate-modal.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/modal/replace-duplicate-modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAQ,KAAK,EAAuB,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAMtD,KAAK,WAAW,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAEtD,MAAM,MAAM,iCAAiC,GAAG,wBAAwB,CACtE,OAAO,KAAK,CACb,GAAG;IACF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC;IAC1C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,WAAW,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC;IAChC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;CACpC,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,iCAAiC,2CAiGzC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Icon, Modal, mergeClassNameProps } from "#powerhouse";
|
|
3
|
+
import { twMerge } from "tailwind-merge";
|
|
4
|
+
const buttonStyles = "min-h-[48px] min-w-[142px] text-base font-semibold py-3 px-6 rounded-xl outline-none active:opacity-75 hover:scale-105 transform transition-all";
|
|
5
|
+
export function ConnectReplaceDuplicateModal(props) {
|
|
6
|
+
const { title = "Document Already Exists", fileName, message, children, onReplace, onOpenChange, onDuplicate, replaceLabel = "Replace", duplicateLabel = "Create Copy", overlayProps, contentProps, bodyProps = {}, headerProps = {}, containerProps = {}, replaceButtonProps = {}, duplicateButtonProps = {}, buttonContainerProps = {}, ...restProps } = props;
|
|
7
|
+
const defaultMessage = fileName
|
|
8
|
+
? `A document named "${fileName}" already exists in this location. Would you like to replace it or create a copy?`
|
|
9
|
+
: "A document with the same name already exists in this location. Would you like to replace it or create a copy?";
|
|
10
|
+
return (_jsx(Modal, { contentProps: {
|
|
11
|
+
...contentProps,
|
|
12
|
+
className: twMerge("rounded-3xl", contentProps?.className),
|
|
13
|
+
}, onOpenChange: onOpenChange, overlayProps: {
|
|
14
|
+
...overlayProps,
|
|
15
|
+
className: overlayProps?.className,
|
|
16
|
+
}, ...restProps, children: _jsxs("div", { ...mergeClassNameProps(containerProps, "w-[450px] p-6 text-slate-300"), children: [_jsxs("div", { className: "flex items-center justify-between border-b border-slate-50 pb-2", children: [_jsx("div", { ...mergeClassNameProps(headerProps, "text-2xl font-bold text-gray-800"), children: title }), _jsx("button", { type: "button", className: "flex size-6 items-center justify-center rounded-md outline-none hover:bg-slate-100", onClick: () => onOpenChange?.(false), children: _jsx(Icon, { name: "XmarkLight", size: 24 }) })] }), _jsxs("div", { ...mergeClassNameProps(bodyProps, "my-6 rounded-md bg-slate-50 p-4 text-center"), children: [message || defaultMessage, children] }), _jsxs("div", { ...mergeClassNameProps(buttonContainerProps, "mt-8 flex justify-between gap-3"), children: [_jsx("button", { onClick: onReplace, ...mergeClassNameProps(replaceButtonProps, twMerge(buttonStyles, "flex-1 bg-slate-50 text-slate-800")), children: replaceLabel }), _jsx("button", { onClick: onDuplicate, ...mergeClassNameProps(duplicateButtonProps, twMerge(buttonStyles, "flex-1 bg-gray-800 text-gray-50")), children: duplicateLabel })] })] }) }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=replace-duplicate-modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace-duplicate-modal.js","sourceRoot":"","sources":["../../../../../src/connect/components/modal/replace-duplicate-modal.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,YAAY,GAChB,iJAAiJ,CAAC;AAsBpJ,MAAM,UAAU,4BAA4B,CAC1C,KAAwC;IAExC,MAAM,EACJ,KAAK,GAAG,yBAAyB,EACjC,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,GAAG,SAAS,EACxB,cAAc,GAAG,aAAa,EAC9B,YAAY,EACZ,YAAY,EACZ,SAAS,GAAG,EAAE,EACd,WAAW,GAAG,EAAE,EAChB,cAAc,GAAG,EAAE,EACnB,kBAAkB,GAAG,EAAE,EACvB,oBAAoB,GAAG,EAAE,EACzB,oBAAoB,GAAG,EAAE,EACzB,GAAG,SAAS,EACb,GAAG,KAAK,CAAC;IAEV,MAAM,cAAc,GAAG,QAAQ;QAC7B,CAAC,CAAC,qBAAqB,QAAQ,mFAAmF;QAClH,CAAC,CAAC,+GAA+G,CAAC;IAEpH,OAAO,CACL,KAAC,KAAK,IACJ,YAAY,EAAE;YACZ,GAAG,YAAY;YACf,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC;SAC3D,EACD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE;YACZ,GAAG,YAAY;YACf,SAAS,EAAE,YAAY,EAAE,SAAS;SACnC,KACG,SAAS,YAEb,kBACM,mBAAmB,CAAC,cAAc,EAAE,8BAA8B,CAAC,aAEvE,eAAK,SAAS,EAAC,iEAAiE,aAC9E,iBACM,mBAAmB,CACrB,WAAW,EACX,kCAAkC,CACnC,YAEA,KAAK,GACF,EACN,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,oFAAoF,EAC9F,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,YAEpC,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAE,EAAE,GAAI,GAC7B,IACL,EACN,kBACM,mBAAmB,CACrB,SAAS,EACT,6CAA6C,CAC9C,aAEA,OAAO,IAAI,cAAc,EACzB,QAAQ,IACL,EACN,kBACM,mBAAmB,CACrB,oBAAoB,EACpB,iCAAiC,CAClC,aAED,iBACE,OAAO,EAAE,SAAS,KACd,mBAAmB,CACrB,kBAAkB,EAClB,OAAO,CAAC,YAAY,EAAE,mCAAmC,CAAC,CAC3D,YAEA,YAAY,GACN,EACT,iBACE,OAAO,EAAE,WAAW,KAChB,mBAAmB,CACrB,oBAAoB,EACpB,OAAO,CAAC,YAAY,EAAE,iCAAiC,CAAC,CACzD,YAEA,cAAc,GACR,IACL,IACF,GACA,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-row.d.ts","sourceRoot":"","sources":["../../../../../../src/connect/components/upload-file-item/components/status-row.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CACxC,CAAC;
|
|
1
|
+
{"version":3,"file":"status-row.d.ts","sourceRoot":"","sources":["../../../../../../src/connect/components/upload-file-item/components/status-row.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CACxC,CAAC;AAqDF,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAqC9C"}
|
|
@@ -8,6 +8,8 @@ function getStatusText(status) {
|
|
|
8
8
|
return "Upload failed";
|
|
9
9
|
case "pending":
|
|
10
10
|
return "Pending resolution";
|
|
11
|
+
case "conflict":
|
|
12
|
+
return "Pending Resolution";
|
|
11
13
|
case "uploading":
|
|
12
14
|
return "Uploading...";
|
|
13
15
|
default:
|
|
@@ -20,6 +22,7 @@ function getStatusColor(status) {
|
|
|
20
22
|
return "text-green-700";
|
|
21
23
|
case "failed":
|
|
22
24
|
case "pending":
|
|
25
|
+
case "conflict":
|
|
23
26
|
return "text-red-900";
|
|
24
27
|
case "uploading":
|
|
25
28
|
return "text-gray-900";
|
|
@@ -29,13 +32,16 @@ function getStatusColor(status) {
|
|
|
29
32
|
}
|
|
30
33
|
function shouldShowCTA(status, onOpenDocument, onFindResolution) {
|
|
31
34
|
return ((status === "success" && Boolean(onOpenDocument)) ||
|
|
32
|
-
(status === "pending" && Boolean(onFindResolution))
|
|
35
|
+
(status === "pending" && Boolean(onFindResolution)) ||
|
|
36
|
+
(status === "conflict" && Boolean(onFindResolution)));
|
|
33
37
|
}
|
|
34
38
|
function getCTAText(status) {
|
|
35
39
|
if (status === "success")
|
|
36
40
|
return "Open Document";
|
|
37
41
|
if (status === "pending")
|
|
38
42
|
return "Find resolution";
|
|
43
|
+
if (status === "conflict")
|
|
44
|
+
return "Find resolution";
|
|
39
45
|
return "";
|
|
40
46
|
}
|
|
41
47
|
export function StatusRow(props) {
|
|
@@ -43,7 +49,8 @@ export function StatusRow(props) {
|
|
|
43
49
|
const handleCTAClick = () => {
|
|
44
50
|
if (status === "success" && onOpenDocument)
|
|
45
51
|
onOpenDocument();
|
|
46
|
-
else if (status === "pending"
|
|
52
|
+
else if ((status === "pending" || status === "conflict") &&
|
|
53
|
+
onFindResolution)
|
|
47
54
|
onFindResolution();
|
|
48
55
|
};
|
|
49
56
|
return (_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("div", { className: twMerge("text-xs leading-[18px]", getStatusColor(status)), children: getStatusText(status) }), status === "uploading" && (_jsxs("div", { className: "text-xs font-medium leading-[18px] text-gray-900", children: [Math.round(progress), "%"] })), shouldShowCTA(status, onOpenDocument, onFindResolution) && (_jsx("button", { type: "button", onClick: handleCTAClick, className: "text-xs leading-[18px] text-blue-900 hover:opacity-80", children: getCTAText(status) }))] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-row.js","sourceRoot":"","sources":["../../../../../../src/connect/components/upload-file-item/components/status-row.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAWzC,SAAS,aAAa,CAAC,MAA4B;IACjD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,mBAAmB,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,eAAe,CAAC;QACzB,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC;QAC9B,KAAK,WAAW;YACd,OAAO,cAAc,CAAC;QACxB;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAA4B;IAClD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,gBAAgB,CAAC;QAC1B,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;
|
|
1
|
+
{"version":3,"file":"status-row.js","sourceRoot":"","sources":["../../../../../../src/connect/components/upload-file-item/components/status-row.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAWzC,SAAS,aAAa,CAAC,MAA4B;IACjD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,mBAAmB,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,eAAe,CAAC;QACzB,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC;QAC9B,KAAK,UAAU;YACb,OAAO,oBAAoB,CAAC;QAC9B,KAAK,WAAW;YACd,OAAO,cAAc,CAAC;QACxB;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAA4B;IAClD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,gBAAgB,CAAC;QAC1B,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,UAAU;YACb,OAAO,cAAc,CAAC;QACxB,KAAK,WAAW;YACd,OAAO,eAAe,CAAC;QACzB;YACE,OAAO,eAAe,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,MAA4B,EAC5B,cAA2B,EAC3B,gBAA6B;IAE7B,OAAO,CACL,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;QACjD,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACnD,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,CACrD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAA4B;IAC9C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,eAAe,CAAC;IACjD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,iBAAiB,CAAC;IACnD,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,iBAAiB,CAAC;IACpD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;IAEzE,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,MAAM,KAAK,SAAS,IAAI,cAAc;YAAE,cAAc,EAAE,CAAC;aACxD,IACH,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,UAAU,CAAC;YAC/C,gBAAgB;YAEhB,gBAAgB,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,yCAAyC,aACtD,cACE,SAAS,EAAE,OAAO,CAAC,wBAAwB,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,YAEnE,aAAa,CAAC,MAAM,CAAC,GAClB,EAEL,MAAM,KAAK,WAAW,IAAI,CACzB,eAAK,SAAS,EAAC,kDAAkD,aAC9D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SACjB,CACP,EAEA,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,gBAAgB,CAAC,IAAI,CAC1D,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAc,EACvB,SAAS,EAAC,uDAAuD,YAEhE,UAAU,CAAC,MAAM,CAAC,GACZ,CACV,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type ComponentPropsWithoutRef } from "react";
|
|
2
1
|
import type { DocumentTypeIcon } from "@powerhousedao/reactor-browser";
|
|
3
|
-
|
|
2
|
+
import { type ComponentPropsWithoutRef } from "react";
|
|
3
|
+
export type UploadFileItemStatus = "success" | "failed" | "pending" | "uploading" | "conflict";
|
|
4
4
|
export type UploadFileItemProps = ComponentPropsWithoutRef<"div"> & {
|
|
5
5
|
readonly fileName: string;
|
|
6
6
|
readonly fileSize: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-file-item.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/upload-file-item/upload-file-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"upload-file-item.d.ts","sourceRoot":"","sources":["../../../../../src/connect/components/upload-file-item/upload-file-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,KAAK,wBAAwB,EAAc,MAAM,OAAO,CAAC;AAOlE,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,QAAQ,GACR,SAAS,GACT,WAAW,GACX,UAAU,CAAC;AAEf,MAAM,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,cAAc;uBAXN,MAAM;uBACN,MAAM;qBACR,oBAAoB;4BACb,gBAAgB;wBACpB,MAAM;4BACF,MAAM;uBACX,MAAM,IAAI;8BACH,MAAM,IAAI;gCACR,MAAM,IAAI;kDAgDvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-file-item.js","sourceRoot":"","sources":["../../../../../src/connect/components/upload-file-item/upload-file-item.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"upload-file-item.js","sourceRoot":"","sources":["../../../../../src/connect/components/upload-file-item/upload-file-item.tsx"],"names":[],"mappings":";AACA,OAAO,EAAiC,UAAU,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAqBvD,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG;IAChC,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,QAAQ,GAAG,CAAC,EACZ,YAAY,EACZ,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,GAAG,cAAc,EAClB,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,CAChB,oHAAoH,EACpH,SAAS,CACV,KACG,cAAc,aAElB,KAAC,MAAM,IACL,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,GAChB,EAEF,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,SAAS,IACR,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,GAClC,EACF,KAAC,WAAW,IAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAI,EACnD,KAAC,YAAY,IAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAI,IACxD,IACF,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
package/dist/style.css
CHANGED
|
@@ -3110,6 +3110,13 @@
|
|
|
3110
3110
|
}
|
|
3111
3111
|
}
|
|
3112
3112
|
}
|
|
3113
|
+
.hover\:bg-blue-600 {
|
|
3114
|
+
&:hover {
|
|
3115
|
+
@media (hover: hover) {
|
|
3116
|
+
background-color: var(--color-blue-600);
|
|
3117
|
+
}
|
|
3118
|
+
}
|
|
3119
|
+
}
|
|
3113
3120
|
.hover\:bg-gray-50 {
|
|
3114
3121
|
&:hover {
|
|
3115
3122
|
@media (hover: hover) {
|
|
@@ -3145,6 +3152,13 @@
|
|
|
3145
3152
|
}
|
|
3146
3153
|
}
|
|
3147
3154
|
}
|
|
3155
|
+
.hover\:bg-slate-100 {
|
|
3156
|
+
&:hover {
|
|
3157
|
+
@media (hover: hover) {
|
|
3158
|
+
background-color: var(--color-slate-100);
|
|
3159
|
+
}
|
|
3160
|
+
}
|
|
3161
|
+
}
|
|
3148
3162
|
.hover\:bg-slate-800 {
|
|
3149
3163
|
&:hover {
|
|
3150
3164
|
@media (hover: hover) {
|