@sparkstudio/storage-ui 1.0.15 → 1.0.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/index.cjs +118 -20
- package/dist/index.js +128 -20
- package/package.json +4 -2
package/dist/index.cjs
CHANGED
|
@@ -526,8 +526,81 @@ var UploadProgressList = ({
|
|
|
526
526
|
};
|
|
527
527
|
|
|
528
528
|
// src/components/DesktopFileIcon.tsx
|
|
529
|
+
var import_free_solid_svg_icons = require("@fortawesome/free-solid-svg-icons");
|
|
530
|
+
var import_react_fontawesome = require("@fortawesome/react-fontawesome");
|
|
529
531
|
var import_react4 = require("react");
|
|
530
532
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
533
|
+
function getFileExtension(name) {
|
|
534
|
+
if (!name) return null;
|
|
535
|
+
const lastDot = name.lastIndexOf(".");
|
|
536
|
+
if (lastDot === -1 || lastDot === name.length - 1) return null;
|
|
537
|
+
return name.substring(lastDot + 1).toLowerCase();
|
|
538
|
+
}
|
|
539
|
+
function getIconForExtension(ext) {
|
|
540
|
+
if (!ext) return import_free_solid_svg_icons.faFile;
|
|
541
|
+
switch (ext) {
|
|
542
|
+
// Images
|
|
543
|
+
case "jpg":
|
|
544
|
+
case "jpeg":
|
|
545
|
+
case "png":
|
|
546
|
+
case "gif":
|
|
547
|
+
case "webp":
|
|
548
|
+
case "bmp":
|
|
549
|
+
return import_free_solid_svg_icons.faFileImage;
|
|
550
|
+
// PDF
|
|
551
|
+
case "pdf":
|
|
552
|
+
return import_free_solid_svg_icons.faFilePdf;
|
|
553
|
+
// Word docs
|
|
554
|
+
case "doc":
|
|
555
|
+
case "docx":
|
|
556
|
+
return import_free_solid_svg_icons.faFileWord;
|
|
557
|
+
// Excel / spreadsheets
|
|
558
|
+
case "xls":
|
|
559
|
+
case "xlsx":
|
|
560
|
+
case "csv":
|
|
561
|
+
return import_free_solid_svg_icons.faFileExcel;
|
|
562
|
+
// Archives
|
|
563
|
+
case "zip":
|
|
564
|
+
case "rar":
|
|
565
|
+
case "7z":
|
|
566
|
+
case "tar":
|
|
567
|
+
case "gz":
|
|
568
|
+
return import_free_solid_svg_icons.faFileArchive;
|
|
569
|
+
// Video
|
|
570
|
+
case "mp4":
|
|
571
|
+
case "mov":
|
|
572
|
+
case "avi":
|
|
573
|
+
case "mkv":
|
|
574
|
+
case "webm":
|
|
575
|
+
return import_free_solid_svg_icons.faFileVideo;
|
|
576
|
+
// Audio
|
|
577
|
+
case "mp3":
|
|
578
|
+
case "wav":
|
|
579
|
+
case "ogg":
|
|
580
|
+
case "flac":
|
|
581
|
+
return import_free_solid_svg_icons.faFileAudio;
|
|
582
|
+
// Code files
|
|
583
|
+
case "js":
|
|
584
|
+
case "ts":
|
|
585
|
+
case "tsx":
|
|
586
|
+
case "jsx":
|
|
587
|
+
case "json":
|
|
588
|
+
case "html":
|
|
589
|
+
case "css":
|
|
590
|
+
case "cs":
|
|
591
|
+
case "java":
|
|
592
|
+
case "py":
|
|
593
|
+
case "rb":
|
|
594
|
+
case "php":
|
|
595
|
+
case "sql":
|
|
596
|
+
case "xml":
|
|
597
|
+
case "yml":
|
|
598
|
+
case "yaml":
|
|
599
|
+
return import_free_solid_svg_icons.faFileCode;
|
|
600
|
+
default:
|
|
601
|
+
return import_free_solid_svg_icons.faFile;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
531
604
|
var DesktopFileIcon = ({
|
|
532
605
|
name,
|
|
533
606
|
sizeBytes,
|
|
@@ -597,6 +670,8 @@ var DesktopFileIcon = ({
|
|
|
597
670
|
}
|
|
598
671
|
};
|
|
599
672
|
const formattedSize = typeof sizeBytes === "number" ? `${(sizeBytes / 1024).toFixed(1)} KB` : void 0;
|
|
673
|
+
const ext = getFileExtension(name);
|
|
674
|
+
const iconToRender = getIconForExtension(ext);
|
|
600
675
|
(0, import_react4.useEffect)(() => {
|
|
601
676
|
if (!contextMenuPos) return;
|
|
602
677
|
const handleGlobalClick = (e) => {
|
|
@@ -619,23 +694,19 @@ var DesktopFileIcon = ({
|
|
|
619
694
|
"div",
|
|
620
695
|
{
|
|
621
696
|
ref: iconRef,
|
|
622
|
-
className: "d-flex flex-column align-items-center rounded-3 p-1 " + (isHovered || contextMenuPos ? "bg-
|
|
697
|
+
className: "d-flex flex-column align-items-center rounded-3 p-1 " + (isHovered || contextMenuPos ? "bg-primary-subtle" : ""),
|
|
623
698
|
style: {
|
|
624
699
|
width: 96,
|
|
625
700
|
cursor: isDeleting ? "default" : "pointer",
|
|
626
701
|
userSelect: "none",
|
|
627
|
-
transition: "background-color 0.1s ease,
|
|
628
|
-
opacity: isDeleting ? 0.6 : 1
|
|
629
|
-
borderWidth: 1,
|
|
630
|
-
borderStyle: "solid"
|
|
702
|
+
transition: "background-color 0.1s ease, opacity 0.1s ease",
|
|
703
|
+
opacity: isDeleting ? 0.6 : 1
|
|
631
704
|
},
|
|
632
705
|
onDoubleClick: handleDoubleClick,
|
|
633
706
|
onContextMenu: handleContextMenu,
|
|
634
707
|
title: name ?? void 0,
|
|
635
708
|
onClick: () => {
|
|
636
|
-
if (contextMenuPos)
|
|
637
|
-
closeMenu();
|
|
638
|
-
}
|
|
709
|
+
if (contextMenuPos) closeMenu();
|
|
639
710
|
},
|
|
640
711
|
onMouseEnter: () => setIsHovered(true),
|
|
641
712
|
onMouseLeave: () => setIsHovered(false),
|
|
@@ -649,19 +720,12 @@ var DesktopFileIcon = ({
|
|
|
649
720
|
height: 64
|
|
650
721
|
},
|
|
651
722
|
children: [
|
|
652
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
723
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_fontawesome.FontAwesomeIcon, { icon: iconToRender, className: "fs-2" }),
|
|
653
724
|
isDeleting && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "position-absolute top-50 start-50 translate-middle", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "spinner-border spinner-border-sm text-danger" }) })
|
|
654
725
|
]
|
|
655
726
|
}
|
|
656
727
|
),
|
|
657
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
658
|
-
"div",
|
|
659
|
-
{
|
|
660
|
-
className: "small text-center text-truncate",
|
|
661
|
-
style: { width: "100%" },
|
|
662
|
-
children: name
|
|
663
|
-
}
|
|
664
|
-
),
|
|
728
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "small text-center text-truncate", style: { width: "100%" }, children: name }),
|
|
665
729
|
formattedSize && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("small", { className: "text-muted mt-1", children: formattedSize })
|
|
666
730
|
]
|
|
667
731
|
}
|
|
@@ -781,7 +845,41 @@ var UploadContainer = ({
|
|
|
781
845
|
{
|
|
782
846
|
className: "w-100 d-flex flex-wrap gap-4 align-content-start",
|
|
783
847
|
style: { minHeight: "140px" },
|
|
784
|
-
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", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "visually-hidden", children: "Loading containers..." }) }) }) : existingFiles.
|
|
848
|
+
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", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "visually-hidden", children: "Loading containers..." }) }) }) : existingFiles.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
849
|
+
"div",
|
|
850
|
+
{
|
|
851
|
+
className: "w-100 d-flex flex-column align-items-center justify-content-center text-muted",
|
|
852
|
+
style: {
|
|
853
|
+
minHeight: "160px",
|
|
854
|
+
border: "2px dashed #ccc",
|
|
855
|
+
borderRadius: "10px",
|
|
856
|
+
padding: "20px",
|
|
857
|
+
cursor: "pointer",
|
|
858
|
+
transition: "background 0.12s, border-color 0.12s"
|
|
859
|
+
},
|
|
860
|
+
onClick: () => document.getElementById("filePicker")?.click(),
|
|
861
|
+
onMouseEnter: (e) => e.currentTarget.style.borderColor = "#888",
|
|
862
|
+
onMouseLeave: (e) => e.currentTarget.style.borderColor = "#ccc",
|
|
863
|
+
children: [
|
|
864
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
865
|
+
"input",
|
|
866
|
+
{
|
|
867
|
+
id: "filePicker",
|
|
868
|
+
type: "file",
|
|
869
|
+
multiple: true,
|
|
870
|
+
hidden: true,
|
|
871
|
+
onChange: (e) => {
|
|
872
|
+
if (!e.target.files) return;
|
|
873
|
+
onFilesSelected?.(e.target.files);
|
|
874
|
+
startUploadsIfNeeded(e.target.files);
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
),
|
|
878
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("strong", { children: "Drag & drop files here" }),
|
|
879
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("small", { className: "mt-1", children: "\u2026or click to browse" })
|
|
880
|
+
]
|
|
881
|
+
}
|
|
882
|
+
) : existingFiles.map((file) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
785
883
|
DesktopFileIcon,
|
|
786
884
|
{
|
|
787
885
|
name: file.Name,
|
|
@@ -928,8 +1026,8 @@ function HomeContent() {
|
|
|
928
1026
|
user && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
929
1027
|
ContainerUploadPanel,
|
|
930
1028
|
{
|
|
931
|
-
containerApiBaseUrl: "https://
|
|
932
|
-
storageApiBaseUrl: "https://
|
|
1029
|
+
containerApiBaseUrl: "https://lf9zyufpuk.execute-api.us-east-2.amazonaws.com/Prod",
|
|
1030
|
+
storageApiBaseUrl: "https://iq0gmcn0pd.execute-api.us-east-2.amazonaws.com/Prod"
|
|
933
1031
|
}
|
|
934
1032
|
)
|
|
935
1033
|
] });
|
package/dist/index.js
CHANGED
|
@@ -485,8 +485,91 @@ var UploadProgressList = ({
|
|
|
485
485
|
};
|
|
486
486
|
|
|
487
487
|
// src/components/DesktopFileIcon.tsx
|
|
488
|
+
import {
|
|
489
|
+
faFile,
|
|
490
|
+
faFilePdf,
|
|
491
|
+
faFileImage,
|
|
492
|
+
faFileWord,
|
|
493
|
+
faFileExcel,
|
|
494
|
+
faFileVideo,
|
|
495
|
+
faFileAudio,
|
|
496
|
+
faFileArchive,
|
|
497
|
+
faFileCode
|
|
498
|
+
} from "@fortawesome/free-solid-svg-icons";
|
|
499
|
+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
488
500
|
import { useEffect, useRef, useState as useState2 } from "react";
|
|
489
501
|
import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
502
|
+
function getFileExtension(name) {
|
|
503
|
+
if (!name) return null;
|
|
504
|
+
const lastDot = name.lastIndexOf(".");
|
|
505
|
+
if (lastDot === -1 || lastDot === name.length - 1) return null;
|
|
506
|
+
return name.substring(lastDot + 1).toLowerCase();
|
|
507
|
+
}
|
|
508
|
+
function getIconForExtension(ext) {
|
|
509
|
+
if (!ext) return faFile;
|
|
510
|
+
switch (ext) {
|
|
511
|
+
// Images
|
|
512
|
+
case "jpg":
|
|
513
|
+
case "jpeg":
|
|
514
|
+
case "png":
|
|
515
|
+
case "gif":
|
|
516
|
+
case "webp":
|
|
517
|
+
case "bmp":
|
|
518
|
+
return faFileImage;
|
|
519
|
+
// PDF
|
|
520
|
+
case "pdf":
|
|
521
|
+
return faFilePdf;
|
|
522
|
+
// Word docs
|
|
523
|
+
case "doc":
|
|
524
|
+
case "docx":
|
|
525
|
+
return faFileWord;
|
|
526
|
+
// Excel / spreadsheets
|
|
527
|
+
case "xls":
|
|
528
|
+
case "xlsx":
|
|
529
|
+
case "csv":
|
|
530
|
+
return faFileExcel;
|
|
531
|
+
// Archives
|
|
532
|
+
case "zip":
|
|
533
|
+
case "rar":
|
|
534
|
+
case "7z":
|
|
535
|
+
case "tar":
|
|
536
|
+
case "gz":
|
|
537
|
+
return faFileArchive;
|
|
538
|
+
// Video
|
|
539
|
+
case "mp4":
|
|
540
|
+
case "mov":
|
|
541
|
+
case "avi":
|
|
542
|
+
case "mkv":
|
|
543
|
+
case "webm":
|
|
544
|
+
return faFileVideo;
|
|
545
|
+
// Audio
|
|
546
|
+
case "mp3":
|
|
547
|
+
case "wav":
|
|
548
|
+
case "ogg":
|
|
549
|
+
case "flac":
|
|
550
|
+
return faFileAudio;
|
|
551
|
+
// Code files
|
|
552
|
+
case "js":
|
|
553
|
+
case "ts":
|
|
554
|
+
case "tsx":
|
|
555
|
+
case "jsx":
|
|
556
|
+
case "json":
|
|
557
|
+
case "html":
|
|
558
|
+
case "css":
|
|
559
|
+
case "cs":
|
|
560
|
+
case "java":
|
|
561
|
+
case "py":
|
|
562
|
+
case "rb":
|
|
563
|
+
case "php":
|
|
564
|
+
case "sql":
|
|
565
|
+
case "xml":
|
|
566
|
+
case "yml":
|
|
567
|
+
case "yaml":
|
|
568
|
+
return faFileCode;
|
|
569
|
+
default:
|
|
570
|
+
return faFile;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
490
573
|
var DesktopFileIcon = ({
|
|
491
574
|
name,
|
|
492
575
|
sizeBytes,
|
|
@@ -556,6 +639,8 @@ var DesktopFileIcon = ({
|
|
|
556
639
|
}
|
|
557
640
|
};
|
|
558
641
|
const formattedSize = typeof sizeBytes === "number" ? `${(sizeBytes / 1024).toFixed(1)} KB` : void 0;
|
|
642
|
+
const ext = getFileExtension(name);
|
|
643
|
+
const iconToRender = getIconForExtension(ext);
|
|
559
644
|
useEffect(() => {
|
|
560
645
|
if (!contextMenuPos) return;
|
|
561
646
|
const handleGlobalClick = (e) => {
|
|
@@ -578,23 +663,19 @@ var DesktopFileIcon = ({
|
|
|
578
663
|
"div",
|
|
579
664
|
{
|
|
580
665
|
ref: iconRef,
|
|
581
|
-
className: "d-flex flex-column align-items-center rounded-3 p-1 " + (isHovered || contextMenuPos ? "bg-
|
|
666
|
+
className: "d-flex flex-column align-items-center rounded-3 p-1 " + (isHovered || contextMenuPos ? "bg-primary-subtle" : ""),
|
|
582
667
|
style: {
|
|
583
668
|
width: 96,
|
|
584
669
|
cursor: isDeleting ? "default" : "pointer",
|
|
585
670
|
userSelect: "none",
|
|
586
|
-
transition: "background-color 0.1s ease,
|
|
587
|
-
opacity: isDeleting ? 0.6 : 1
|
|
588
|
-
borderWidth: 1,
|
|
589
|
-
borderStyle: "solid"
|
|
671
|
+
transition: "background-color 0.1s ease, opacity 0.1s ease",
|
|
672
|
+
opacity: isDeleting ? 0.6 : 1
|
|
590
673
|
},
|
|
591
674
|
onDoubleClick: handleDoubleClick,
|
|
592
675
|
onContextMenu: handleContextMenu,
|
|
593
676
|
title: name ?? void 0,
|
|
594
677
|
onClick: () => {
|
|
595
|
-
if (contextMenuPos)
|
|
596
|
-
closeMenu();
|
|
597
|
-
}
|
|
678
|
+
if (contextMenuPos) closeMenu();
|
|
598
679
|
},
|
|
599
680
|
onMouseEnter: () => setIsHovered(true),
|
|
600
681
|
onMouseLeave: () => setIsHovered(false),
|
|
@@ -608,19 +689,12 @@ var DesktopFileIcon = ({
|
|
|
608
689
|
height: 64
|
|
609
690
|
},
|
|
610
691
|
children: [
|
|
611
|
-
/* @__PURE__ */ jsx3(
|
|
692
|
+
/* @__PURE__ */ jsx3(FontAwesomeIcon, { icon: iconToRender, className: "fs-2" }),
|
|
612
693
|
isDeleting && /* @__PURE__ */ jsx3("div", { className: "position-absolute top-50 start-50 translate-middle", children: /* @__PURE__ */ jsx3("div", { className: "spinner-border spinner-border-sm text-danger" }) })
|
|
613
694
|
]
|
|
614
695
|
}
|
|
615
696
|
),
|
|
616
|
-
/* @__PURE__ */ jsx3(
|
|
617
|
-
"div",
|
|
618
|
-
{
|
|
619
|
-
className: "small text-center text-truncate",
|
|
620
|
-
style: { width: "100%" },
|
|
621
|
-
children: name
|
|
622
|
-
}
|
|
623
|
-
),
|
|
697
|
+
/* @__PURE__ */ jsx3("div", { className: "small text-center text-truncate", style: { width: "100%" }, children: name }),
|
|
624
698
|
formattedSize && /* @__PURE__ */ jsx3("small", { className: "text-muted mt-1", children: formattedSize })
|
|
625
699
|
]
|
|
626
700
|
}
|
|
@@ -740,7 +814,41 @@ var UploadContainer = ({
|
|
|
740
814
|
{
|
|
741
815
|
className: "w-100 d-flex flex-wrap gap-4 align-content-start",
|
|
742
816
|
style: { minHeight: "140px" },
|
|
743
|
-
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", children: /* @__PURE__ */ jsx4("span", { className: "visually-hidden", children: "Loading containers..." }) }) }) : existingFiles.
|
|
817
|
+
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", children: /* @__PURE__ */ jsx4("span", { className: "visually-hidden", children: "Loading containers..." }) }) }) : existingFiles.length === 0 ? /* @__PURE__ */ jsxs3(
|
|
818
|
+
"div",
|
|
819
|
+
{
|
|
820
|
+
className: "w-100 d-flex flex-column align-items-center justify-content-center text-muted",
|
|
821
|
+
style: {
|
|
822
|
+
minHeight: "160px",
|
|
823
|
+
border: "2px dashed #ccc",
|
|
824
|
+
borderRadius: "10px",
|
|
825
|
+
padding: "20px",
|
|
826
|
+
cursor: "pointer",
|
|
827
|
+
transition: "background 0.12s, border-color 0.12s"
|
|
828
|
+
},
|
|
829
|
+
onClick: () => document.getElementById("filePicker")?.click(),
|
|
830
|
+
onMouseEnter: (e) => e.currentTarget.style.borderColor = "#888",
|
|
831
|
+
onMouseLeave: (e) => e.currentTarget.style.borderColor = "#ccc",
|
|
832
|
+
children: [
|
|
833
|
+
/* @__PURE__ */ jsx4(
|
|
834
|
+
"input",
|
|
835
|
+
{
|
|
836
|
+
id: "filePicker",
|
|
837
|
+
type: "file",
|
|
838
|
+
multiple: true,
|
|
839
|
+
hidden: true,
|
|
840
|
+
onChange: (e) => {
|
|
841
|
+
if (!e.target.files) return;
|
|
842
|
+
onFilesSelected?.(e.target.files);
|
|
843
|
+
startUploadsIfNeeded(e.target.files);
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
),
|
|
847
|
+
/* @__PURE__ */ jsx4("strong", { children: "Drag & drop files here" }),
|
|
848
|
+
/* @__PURE__ */ jsx4("small", { className: "mt-1", children: "\u2026or click to browse" })
|
|
849
|
+
]
|
|
850
|
+
}
|
|
851
|
+
) : existingFiles.map((file) => /* @__PURE__ */ jsx4(
|
|
744
852
|
DesktopFileIcon,
|
|
745
853
|
{
|
|
746
854
|
name: file.Name,
|
|
@@ -892,8 +1000,8 @@ function HomeContent() {
|
|
|
892
1000
|
user && /* @__PURE__ */ jsx6(
|
|
893
1001
|
ContainerUploadPanel,
|
|
894
1002
|
{
|
|
895
|
-
containerApiBaseUrl: "https://
|
|
896
|
-
storageApiBaseUrl: "https://
|
|
1003
|
+
containerApiBaseUrl: "https://lf9zyufpuk.execute-api.us-east-2.amazonaws.com/Prod",
|
|
1004
|
+
storageApiBaseUrl: "https://iq0gmcn0pd.execute-api.us-east-2.amazonaws.com/Prod"
|
|
897
1005
|
}
|
|
898
1006
|
)
|
|
899
1007
|
] });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sparkstudio/storage-ui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.16",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -37,8 +37,10 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@aws-sdk/client-s3": "^3.958.0",
|
|
39
39
|
"@aws-sdk/s3-request-presigner": "^3.958.0",
|
|
40
|
+
"@fortawesome/free-solid-svg-icons": "^7.1.0",
|
|
41
|
+
"@fortawesome/react-fontawesome": "^3.1.1",
|
|
40
42
|
"@sparkstudio/authentication-ui": "^1.0.29",
|
|
41
|
-
"@sparkstudio/common-ui": "^1.0.
|
|
43
|
+
"@sparkstudio/common-ui": "^1.0.11",
|
|
42
44
|
"barrelsby": "^2.8.1"
|
|
43
45
|
},
|
|
44
46
|
"devDependencies": {
|