@sparkstudio/storage-ui 1.0.21 → 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -295,7 +295,7 @@ var UploadDropzone = ({
295
295
  children
296
296
  }) => {
297
297
  const baseClass = "rounded-3 d-flex flex-column align-items-center justify-content-center";
298
- const stateClass = isDragging ? "bg-body-secondary" : "";
298
+ const stateClass = isDragging ? "bg-body-secondary border-dashed border-2 border-secondary" : "bg-body-trasparent border-solid border-transparent border-2";
299
299
  const combinedClassName = `${baseClass} ${stateClass} ${className}`.trim();
300
300
  const handleDragOver = (e) => {
301
301
  e.preventDefault();
@@ -856,95 +856,103 @@ var UploadContainer = ({
856
856
  a.click();
857
857
  document.body.removeChild(a);
858
858
  };
859
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
860
- UploadDropzone,
861
- {
862
- isDragging,
863
- onDragOver: handleDragOver,
864
- onDragLeave: handleDragLeave,
865
- onDrop: handleDrop,
866
- className: "w-100",
867
- style: { minHeight: "260px", alignItems: "stretch" },
868
- children: [
869
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "w-100", children: [
859
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
860
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "w-100", children: [
861
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
862
+ "input",
863
+ {
864
+ id: "filePicker",
865
+ type: "file",
866
+ multiple: true,
867
+ className: "d-none",
868
+ onChange: (e) => {
869
+ if (!e.target.files) return;
870
+ onFilesSelected?.(e.target.files);
871
+ startUploadsIfNeeded(e.target.files);
872
+ }
873
+ }
874
+ ),
875
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "text-start", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
876
+ "button",
877
+ {
878
+ type: "button",
879
+ className: "btn btn-primary float-start",
880
+ onClick: () => document.getElementById("filePicker")?.click(),
881
+ children: "Browse files\u2026"
882
+ }
883
+ ) })
884
+ ] }),
885
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
886
+ UploadDropzone,
887
+ {
888
+ isDragging,
889
+ onDragOver: handleDragOver,
890
+ onDragLeave: handleDragLeave,
891
+ onDrop: handleDrop,
892
+ className: "w-100",
893
+ style: { minHeight: "100px", alignItems: "stretch" },
894
+ children: [
895
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "w-100 mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "d-flex flex-column flex-md-row align-items-start align-items-md-center justify-content-between gap-3", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "flex-grow-1 w-100", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(UploadProgressList, { uploads }) }) }) }),
870
896
  /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
871
- "input",
872
- {
873
- id: "filePicker",
874
- type: "file",
875
- multiple: true,
876
- className: "d-none",
877
- onChange: (e) => {
878
- if (!e.target.files) return;
879
- onFilesSelected?.(e.target.files);
880
- startUploadsIfNeeded(e.target.files);
881
- }
882
- }
883
- ),
884
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "text-start", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
885
- "button",
897
+ "div",
886
898
  {
887
- type: "button",
888
- className: "btn btn-primary float-start",
889
- onClick: () => document.getElementById("filePicker")?.click(),
890
- children: "Browse files\u2026"
891
- }
892
- ) })
893
- ] }),
894
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "w-100 mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "d-flex flex-column flex-md-row align-items-start align-items-md-center justify-content-between gap-3", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "flex-grow-1 w-100", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(UploadProgressList, { uploads }) }) }) }),
895
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
896
- "div",
897
- {
898
- className: "w-100 d-flex flex-wrap gap-4 align-content-start",
899
- style: { minHeight: "140px" },
900
- children: existingFilesLoading ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "w-100 d-flex justify-content-center align-items-center", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "spinner-border text-secondary", role: "status" }) }) : existingFiles.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
901
- "div",
902
- {
903
- className: "w-100 d-flex flex-column align-items-center justify-content-center text-muted",
904
- style: {
905
- minHeight: "160px",
906
- padding: "20px",
907
- cursor: "pointer",
908
- transition: "background 0.12s, border-color 0.12s"
909
- },
910
- onClick: () => document.getElementById("filePicker")?.click(),
911
- onMouseEnter: (e) => e.currentTarget.style.borderColor = "#888",
912
- onMouseLeave: (e) => e.currentTarget.style.borderColor = "#ccc",
913
- children: [
914
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
915
- "input",
916
- {
917
- id: "filePicker",
918
- type: "file",
919
- multiple: true,
920
- hidden: true,
921
- onChange: (e) => {
922
- if (!e.target.files) return;
923
- onFilesSelected?.(e.target.files);
924
- startUploadsIfNeeded(e.target.files);
899
+ className: "w-100 d-flex flex-wrap gap-4 align-content-start",
900
+ style: { minHeight: "140px" },
901
+ children: existingFilesLoading ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "w-100 d-flex justify-content-center align-items-center", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
902
+ "div",
903
+ {
904
+ className: "spinner-border text-secondary",
905
+ role: "status"
906
+ }
907
+ ) }) : existingFiles.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
908
+ "div",
909
+ {
910
+ className: "w-100 d-flex flex-column align-items-center justify-content-center text-muted",
911
+ style: {
912
+ minHeight: "160px",
913
+ padding: "20px",
914
+ cursor: "pointer",
915
+ transition: "background 0.12s, border-color 0.12s"
916
+ },
917
+ onClick: () => document.getElementById("filePicker")?.click(),
918
+ onMouseEnter: (e) => e.currentTarget.style.borderColor = "#888",
919
+ onMouseLeave: (e) => e.currentTarget.style.borderColor = "#ccc",
920
+ children: [
921
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
922
+ "input",
923
+ {
924
+ id: "filePicker",
925
+ type: "file",
926
+ multiple: true,
927
+ hidden: true,
928
+ onChange: (e) => {
929
+ if (!e.target.files) return;
930
+ onFilesSelected?.(e.target.files);
931
+ startUploadsIfNeeded(e.target.files);
932
+ }
925
933
  }
926
- }
927
- ),
928
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("strong", { children: "Drag & drop files here" }),
929
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("small", { className: "mt-1", children: "\u2026or click to browse" })
930
- ]
931
- }
932
- ) : existingFiles.map((file) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
933
- DesktopFileIcon,
934
- {
935
- name: file.Name,
936
- sizeBytes: file.FileSize,
937
- downloadUrl: file.PublicUrl,
938
- onOpen: () => handleExistingFileOpen(file),
939
- onDelete: () => onDeleteFile?.(file)
940
- },
941
- file.Id
942
- ))
943
- }
944
- )
945
- ]
946
- }
947
- );
934
+ ),
935
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("strong", { children: "Drag & drop files here" }),
936
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("small", { className: "mt-1", children: "\u2026or click to browse" })
937
+ ]
938
+ }
939
+ ) : existingFiles.map((file) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
940
+ DesktopFileIcon,
941
+ {
942
+ name: file.Name,
943
+ sizeBytes: file.FileSize,
944
+ downloadUrl: file.PublicUrl,
945
+ onOpen: () => handleExistingFileOpen(file),
946
+ onDelete: () => onDeleteFile?.(file)
947
+ },
948
+ file.Id
949
+ ))
950
+ }
951
+ )
952
+ ]
953
+ }
954
+ )
955
+ ] });
948
956
  };
949
957
 
950
958
  // src/hooks/UseContainers.ts
@@ -1058,7 +1066,7 @@ var ContainerUploadPanel = ({
1058
1066
  // src/components/SingleFileProcessUploader.tsx
1059
1067
  var import_react8 = require("react");
1060
1068
  var import_jsx_runtime6 = require("react/jsx-runtime");
1061
- var SingleFileProcessUploader = ({ getPresignedUrl, onUploadComplete, accept, label, disabled }) => {
1069
+ var SingleFileProcessUploader = ({ getPresignedUrl, onUploadComplete, accept, disabled }) => {
1062
1070
  const [selectedFile, setSelectedFile] = (0, import_react8.useState)(null);
1063
1071
  const [isDragging, setIsDragging] = (0, import_react8.useState)(false);
1064
1072
  const [progress, setProgress] = (0, import_react8.useState)(null);
@@ -1132,10 +1140,9 @@ var SingleFileProcessUploader = ({ getPresignedUrl, onUploadComplete, accept, la
1132
1140
  "text-center",
1133
1141
  "user-select-none",
1134
1142
  disabled ? "opacity-50" : "cursor-pointer",
1135
- isDragging ? "bg-info-subtle" : "bg-transparent"
1143
+ isDragging ? "bg-body-secondary border-dashed border-2 border-secondary" : "bg-body-trasparent border-transparent border-2"
1136
1144
  ].join(" ");
1137
1145
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "d-flex flex-column gap-2", children: [
1138
- label && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("label", { className: "form-label fw-semibold", children: label }),
1139
1146
  /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1140
1147
  "div",
1141
1148
  {
@@ -1174,7 +1181,10 @@ var SingleFileProcessUploader = ({ getPresignedUrl, onUploadComplete, accept, la
1174
1181
  ),
1175
1182
  isUploading && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "small", children: [
1176
1183
  /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "d-flex justify-content-between mb-1", children: [
1177
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: "Uploading..." }),
1184
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { children: [
1185
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "spinner-border spinner-border-sm text-primary" }),
1186
+ " Uploading..."
1187
+ ] }),
1178
1188
  /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { children: [
1179
1189
  progress ?? 0,
1180
1190
  "%"
@@ -1241,7 +1251,6 @@ function HomeContent() {
1241
1251
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1242
1252
  SingleFileProcessUploader,
1243
1253
  {
1244
- label: "Upload a file to process",
1245
1254
  accept: "*/*",
1246
1255
  getPresignedUrl: getPresignedUrlFromApi,
1247
1256
  onUploadComplete: (file, s3Url) => {
package/dist/index.d.cts CHANGED
@@ -135,7 +135,6 @@ interface SingleFileProcessUploaderProps {
135
135
  getPresignedUrl: (file: File) => Promise<AWSPresignedUrlDTO>;
136
136
  onUploadComplete?: (file: File, s3Url: AWSPresignedUrlDTO) => void;
137
137
  accept?: string;
138
- label?: string;
139
138
  disabled?: boolean;
140
139
  }
141
140
  declare const SingleFileProcessUploader: React__default.FC<SingleFileProcessUploaderProps>;
package/dist/index.d.ts CHANGED
@@ -135,7 +135,6 @@ interface SingleFileProcessUploaderProps {
135
135
  getPresignedUrl: (file: File) => Promise<AWSPresignedUrlDTO>;
136
136
  onUploadComplete?: (file: File, s3Url: AWSPresignedUrlDTO) => void;
137
137
  accept?: string;
138
- label?: string;
139
138
  disabled?: boolean;
140
139
  }
141
140
  declare const SingleFileProcessUploader: React__default.FC<SingleFileProcessUploaderProps>;
package/dist/index.js CHANGED
@@ -252,7 +252,7 @@ var UploadDropzone = ({
252
252
  children
253
253
  }) => {
254
254
  const baseClass = "rounded-3 d-flex flex-column align-items-center justify-content-center";
255
- const stateClass = isDragging ? "bg-body-secondary" : "";
255
+ const stateClass = isDragging ? "bg-body-secondary border-dashed border-2 border-secondary" : "bg-body-trasparent border-solid border-transparent border-2";
256
256
  const combinedClassName = `${baseClass} ${stateClass} ${className}`.trim();
257
257
  const handleDragOver = (e) => {
258
258
  e.preventDefault();
@@ -774,7 +774,7 @@ var DesktopFileIcon = ({
774
774
  };
775
775
 
776
776
  // src/components/UploadContainer.tsx
777
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
777
+ import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
778
778
  var UploadContainer = ({
779
779
  onFilesSelected,
780
780
  existingFiles = [],
@@ -823,95 +823,103 @@ var UploadContainer = ({
823
823
  a.click();
824
824
  document.body.removeChild(a);
825
825
  };
826
- return /* @__PURE__ */ jsxs3(
827
- UploadDropzone,
828
- {
829
- isDragging,
830
- onDragOver: handleDragOver,
831
- onDragLeave: handleDragLeave,
832
- onDrop: handleDrop,
833
- className: "w-100",
834
- style: { minHeight: "260px", alignItems: "stretch" },
835
- children: [
836
- /* @__PURE__ */ jsxs3("div", { className: "w-100", children: [
826
+ return /* @__PURE__ */ jsxs3(Fragment2, { children: [
827
+ /* @__PURE__ */ jsxs3("div", { className: "w-100", children: [
828
+ /* @__PURE__ */ jsx4(
829
+ "input",
830
+ {
831
+ id: "filePicker",
832
+ type: "file",
833
+ multiple: true,
834
+ className: "d-none",
835
+ onChange: (e) => {
836
+ if (!e.target.files) return;
837
+ onFilesSelected?.(e.target.files);
838
+ startUploadsIfNeeded(e.target.files);
839
+ }
840
+ }
841
+ ),
842
+ /* @__PURE__ */ jsx4("div", { className: "text-start", children: /* @__PURE__ */ jsx4(
843
+ "button",
844
+ {
845
+ type: "button",
846
+ className: "btn btn-primary float-start",
847
+ onClick: () => document.getElementById("filePicker")?.click(),
848
+ children: "Browse files\u2026"
849
+ }
850
+ ) })
851
+ ] }),
852
+ /* @__PURE__ */ jsxs3(
853
+ UploadDropzone,
854
+ {
855
+ isDragging,
856
+ onDragOver: handleDragOver,
857
+ onDragLeave: handleDragLeave,
858
+ onDrop: handleDrop,
859
+ className: "w-100",
860
+ style: { minHeight: "100px", alignItems: "stretch" },
861
+ children: [
862
+ /* @__PURE__ */ jsx4("div", { className: "w-100 mb-3", children: /* @__PURE__ */ jsx4("div", { className: "d-flex flex-column flex-md-row align-items-start align-items-md-center justify-content-between gap-3", children: /* @__PURE__ */ jsx4("div", { className: "flex-grow-1 w-100", children: /* @__PURE__ */ jsx4(UploadProgressList, { uploads }) }) }) }),
837
863
  /* @__PURE__ */ jsx4(
838
- "input",
839
- {
840
- id: "filePicker",
841
- type: "file",
842
- multiple: true,
843
- className: "d-none",
844
- onChange: (e) => {
845
- if (!e.target.files) return;
846
- onFilesSelected?.(e.target.files);
847
- startUploadsIfNeeded(e.target.files);
848
- }
849
- }
850
- ),
851
- /* @__PURE__ */ jsx4("div", { className: "text-start", children: /* @__PURE__ */ jsx4(
852
- "button",
864
+ "div",
853
865
  {
854
- type: "button",
855
- className: "btn btn-primary float-start",
856
- onClick: () => document.getElementById("filePicker")?.click(),
857
- children: "Browse files\u2026"
858
- }
859
- ) })
860
- ] }),
861
- /* @__PURE__ */ jsx4("div", { className: "w-100 mb-3", children: /* @__PURE__ */ jsx4("div", { className: "d-flex flex-column flex-md-row align-items-start align-items-md-center justify-content-between gap-3", children: /* @__PURE__ */ jsx4("div", { className: "flex-grow-1 w-100", children: /* @__PURE__ */ jsx4(UploadProgressList, { uploads }) }) }) }),
862
- /* @__PURE__ */ jsx4(
863
- "div",
864
- {
865
- className: "w-100 d-flex flex-wrap gap-4 align-content-start",
866
- style: { minHeight: "140px" },
867
- children: existingFilesLoading ? /* @__PURE__ */ jsx4("div", { className: "w-100 d-flex justify-content-center align-items-center", children: /* @__PURE__ */ jsx4("div", { className: "spinner-border text-secondary", role: "status" }) }) : existingFiles.length === 0 ? /* @__PURE__ */ jsxs3(
868
- "div",
869
- {
870
- className: "w-100 d-flex flex-column align-items-center justify-content-center text-muted",
871
- style: {
872
- minHeight: "160px",
873
- padding: "20px",
874
- cursor: "pointer",
875
- transition: "background 0.12s, border-color 0.12s"
876
- },
877
- onClick: () => document.getElementById("filePicker")?.click(),
878
- onMouseEnter: (e) => e.currentTarget.style.borderColor = "#888",
879
- onMouseLeave: (e) => e.currentTarget.style.borderColor = "#ccc",
880
- children: [
881
- /* @__PURE__ */ jsx4(
882
- "input",
883
- {
884
- id: "filePicker",
885
- type: "file",
886
- multiple: true,
887
- hidden: true,
888
- onChange: (e) => {
889
- if (!e.target.files) return;
890
- onFilesSelected?.(e.target.files);
891
- startUploadsIfNeeded(e.target.files);
866
+ className: "w-100 d-flex flex-wrap gap-4 align-content-start",
867
+ style: { minHeight: "140px" },
868
+ children: existingFilesLoading ? /* @__PURE__ */ jsx4("div", { className: "w-100 d-flex justify-content-center align-items-center", children: /* @__PURE__ */ jsx4(
869
+ "div",
870
+ {
871
+ className: "spinner-border text-secondary",
872
+ role: "status"
873
+ }
874
+ ) }) : existingFiles.length === 0 ? /* @__PURE__ */ jsxs3(
875
+ "div",
876
+ {
877
+ className: "w-100 d-flex flex-column align-items-center justify-content-center text-muted",
878
+ style: {
879
+ minHeight: "160px",
880
+ padding: "20px",
881
+ cursor: "pointer",
882
+ transition: "background 0.12s, border-color 0.12s"
883
+ },
884
+ onClick: () => document.getElementById("filePicker")?.click(),
885
+ onMouseEnter: (e) => e.currentTarget.style.borderColor = "#888",
886
+ onMouseLeave: (e) => e.currentTarget.style.borderColor = "#ccc",
887
+ children: [
888
+ /* @__PURE__ */ jsx4(
889
+ "input",
890
+ {
891
+ id: "filePicker",
892
+ type: "file",
893
+ multiple: true,
894
+ hidden: true,
895
+ onChange: (e) => {
896
+ if (!e.target.files) return;
897
+ onFilesSelected?.(e.target.files);
898
+ startUploadsIfNeeded(e.target.files);
899
+ }
892
900
  }
893
- }
894
- ),
895
- /* @__PURE__ */ jsx4("strong", { children: "Drag & drop files here" }),
896
- /* @__PURE__ */ jsx4("small", { className: "mt-1", children: "\u2026or click to browse" })
897
- ]
898
- }
899
- ) : existingFiles.map((file) => /* @__PURE__ */ jsx4(
900
- DesktopFileIcon,
901
- {
902
- name: file.Name,
903
- sizeBytes: file.FileSize,
904
- downloadUrl: file.PublicUrl,
905
- onOpen: () => handleExistingFileOpen(file),
906
- onDelete: () => onDeleteFile?.(file)
907
- },
908
- file.Id
909
- ))
910
- }
911
- )
912
- ]
913
- }
914
- );
901
+ ),
902
+ /* @__PURE__ */ jsx4("strong", { children: "Drag & drop files here" }),
903
+ /* @__PURE__ */ jsx4("small", { className: "mt-1", children: "\u2026or click to browse" })
904
+ ]
905
+ }
906
+ ) : existingFiles.map((file) => /* @__PURE__ */ jsx4(
907
+ DesktopFileIcon,
908
+ {
909
+ name: file.Name,
910
+ sizeBytes: file.FileSize,
911
+ downloadUrl: file.PublicUrl,
912
+ onOpen: () => handleExistingFileOpen(file),
913
+ onDelete: () => onDeleteFile?.(file)
914
+ },
915
+ file.Id
916
+ ))
917
+ }
918
+ )
919
+ ]
920
+ }
921
+ )
922
+ ] });
915
923
  };
916
924
 
917
925
  // src/hooks/UseContainers.ts
@@ -1025,7 +1033,7 @@ var ContainerUploadPanel = ({
1025
1033
  // src/components/SingleFileProcessUploader.tsx
1026
1034
  import { useCallback as useCallback2, useRef as useRef2, useState as useState5 } from "react";
1027
1035
  import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
1028
- var SingleFileProcessUploader = ({ getPresignedUrl, onUploadComplete, accept, label, disabled }) => {
1036
+ var SingleFileProcessUploader = ({ getPresignedUrl, onUploadComplete, accept, disabled }) => {
1029
1037
  const [selectedFile, setSelectedFile] = useState5(null);
1030
1038
  const [isDragging, setIsDragging] = useState5(false);
1031
1039
  const [progress, setProgress] = useState5(null);
@@ -1099,10 +1107,9 @@ var SingleFileProcessUploader = ({ getPresignedUrl, onUploadComplete, accept, la
1099
1107
  "text-center",
1100
1108
  "user-select-none",
1101
1109
  disabled ? "opacity-50" : "cursor-pointer",
1102
- isDragging ? "bg-info-subtle" : "bg-transparent"
1110
+ isDragging ? "bg-body-secondary border-dashed border-2 border-secondary" : "bg-body-trasparent border-transparent border-2"
1103
1111
  ].join(" ");
1104
1112
  return /* @__PURE__ */ jsxs4("div", { className: "d-flex flex-column gap-2", children: [
1105
- label && /* @__PURE__ */ jsx6("label", { className: "form-label fw-semibold", children: label }),
1106
1113
  /* @__PURE__ */ jsxs4(
1107
1114
  "div",
1108
1115
  {
@@ -1141,7 +1148,10 @@ var SingleFileProcessUploader = ({ getPresignedUrl, onUploadComplete, accept, la
1141
1148
  ),
1142
1149
  isUploading && /* @__PURE__ */ jsxs4("div", { className: "small", children: [
1143
1150
  /* @__PURE__ */ jsxs4("div", { className: "d-flex justify-content-between mb-1", children: [
1144
- /* @__PURE__ */ jsx6("span", { children: "Uploading..." }),
1151
+ /* @__PURE__ */ jsxs4("span", { children: [
1152
+ /* @__PURE__ */ jsx6("div", { className: "spinner-border spinner-border-sm text-primary" }),
1153
+ " Uploading..."
1154
+ ] }),
1145
1155
  /* @__PURE__ */ jsxs4("span", { children: [
1146
1156
  progress ?? 0,
1147
1157
  "%"
@@ -1184,7 +1194,7 @@ import {
1184
1194
  UserInfoCard,
1185
1195
  useUser
1186
1196
  } from "@sparkstudio/authentication-ui";
1187
- import { Fragment as Fragment2, jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
1197
+ import { Fragment as Fragment3, jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
1188
1198
  function HomeView() {
1189
1199
  return /* @__PURE__ */ jsx7(
1190
1200
  AuthenticatorProvider,
@@ -1207,13 +1217,12 @@ function HomeContent() {
1207
1217
  const result = await res.s3.GetTemporaryPreSignedUrl(new TemporaryFileDTO({ Name: file.name, ContentType: contentType }));
1208
1218
  return result;
1209
1219
  }
1210
- return /* @__PURE__ */ jsxs5(Fragment2, { children: [
1220
+ return /* @__PURE__ */ jsxs5(Fragment3, { children: [
1211
1221
  /* @__PURE__ */ jsx7(UserInfoCard, {}),
1212
- user && /* @__PURE__ */ jsxs5(Fragment2, { children: [
1222
+ user && /* @__PURE__ */ jsxs5(Fragment3, { children: [
1213
1223
  /* @__PURE__ */ jsx7(
1214
1224
  SingleFileProcessUploader,
1215
1225
  {
1216
- label: "Upload a file to process",
1217
1226
  accept: "*/*",
1218
1227
  getPresignedUrl: getPresignedUrlFromApi,
1219
1228
  onUploadComplete: (file, s3Url) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sparkstudio/storage-ui",
3
- "version": "1.0.21",
3
+ "version": "1.0.23",
4
4
  "type": "module",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
@@ -40,7 +40,7 @@
40
40
  "@fortawesome/free-solid-svg-icons": "^7.1.0",
41
41
  "@fortawesome/react-fontawesome": "^3.1.1",
42
42
  "@sparkstudio/authentication-ui": "^1.0.29",
43
- "@sparkstudio/common-ui": "^1.0.26",
43
+ "@sparkstudio/common-ui": "^1.0.29",
44
44
  "barrelsby": "^2.8.1"
45
45
  },
46
46
  "devDependencies": {